C#项目是否可以使用多个.NET版本?

C#项目是否可以使用多个.NET版本?,c#,.net,C#,.net,我自学了编码,我不确定这是否可行。 我也不知道我在这里问的是否是某个名字(例如:“你问的东西叫xxxxxx”)。我找不到关于这个主题的任何东西(但确实找到了一些升级文章,这并不是我想要的,所以如果这听起来像是硬核程序员的一个NOOB问题,请原谅;我是一个初学者) 我有一个依赖.NET2.0的小项目,因为包含了一些外部库。该软件运行良好,但现在需要增加功能;在.NET4.0或4.5下编程要容易得多 但是,包含的外部库不在.NET级别,所以现在我想知道:一个项目可以有多个.NET版本吗 我不确定,但

我自学了编码,我不确定这是否可行。 我也不知道我在这里问的是否是某个名字(例如:“你问的东西叫xxxxxx”)。我找不到关于这个主题的任何东西(但确实找到了一些升级文章,这并不是我想要的,所以如果这听起来像是硬核程序员的一个NOOB问题,请原谅;我是一个初学者)

我有一个依赖.NET2.0的小项目,因为包含了一些外部库。该软件运行良好,但现在需要增加功能;在.NET4.0或4.5下编程要容易得多

但是,包含的外部库不在.NET级别,所以现在我想知道:一个项目可以有多个.NET版本吗


我不确定,但也在想,也许我只是把我的新函数写成一个依赖于.NET 4.5的dll,在这个dll中,我在一个不同的项目中编写我的公共函数,然后在我的prj中包含最后一个依赖于.NET 2.0的dll。。。不确定这是否是一种方式。

听起来您正在寻找并行执行,尤其是在流程并行执行中:


是的,您可以将.NET 2程序集包括到.NET 4或.NET 4.5项目中(或任何版本,如果愿意)。在.NET2项目中包含.NET4程序集将不起作用

如果要在基础项目中使用新功能,则需要升级所有依赖它的项目。然后确保整个树支持.NET 4(例如Office插件或您可能使用的其他相关软件)


例外情况是使用(同时使用.NET和非托管代码的程序集),它们与CLR的关系更紧密,可能会导致()。

您只能使用一个.NET版本,这是主应用程序需要(或已配置)使用的版本。但是,.NET在很大程度上与旧版本向后兼容,并且通常可以在新版本的框架中运行旧程序集,而不做任何更改

因此,即使您的应用程序可能正在运行.NET 4或4.5,您也可以使用为.NET 2编写的程序集(或库)(尽管有些限制可能适用,如其他人所述)。这些程序集只是在4.5 CLR下运行(假设它们没有向后兼容性问题),这种情况很少见,但确实会发生)


但要记住的关键是,您运行的应用程序必须是任何包含程序集的最高版本。也就是说,如果您有4.5个程序集,则无法将应用程序作为2.0应用程序运行。它必须是另一种方式。

是的,您可以包括。CLS就是这么做的


如果要在基础项目中使用新功能,则需要升级基于它的所有项目

从我在Microsoft存储库中看到的情况来看,他们要支持的每个.NET版本都有单独的项目…难道你不能只使用任何依赖于较低(或同等).NET版本的库吗?除了混合模式程序集,我希望在.NET2.0上构建的程序集通常只在.NET4.0或4.5中工作……更好的方法是c#向后兼容。几乎是我认为最好的答案,因为它以前被问过。或者,可以使用useLegacyV2RuntimeActivationPolicy:@JonathanDickinson:确实可以使V2混合模式程序集在V4运行时下工作。请参阅激活策略下的链接。添加了MSDN链接。那么,你的意思是我的主应用程序必须转换为v4,而我必须在v2中保留作为v4一部分的某种特殊策略中的例程吗?@user613326:不,如果你打算在子项目中使用.NET,并将其包含在.NET 4项目中,那就可以了。另一方面,情况并非如此。混合程序集也会带来问题(我怀疑您是否使用它)。