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

时间:2015-06-02 10:37:46

标签: c# .net

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

由于包含了一些外部库,我有一个依赖.NET 2.0的小项目。该软件运行良好,但现在需要增加功能;在.NET 4.0或4.5下更容易编程的东西。

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

我不确定但也在考虑也许我只将我的新函数编写为依赖于.NET 4.5的dll,其中我在不同的项目中编写我的公共函数,然后在我的prj中包含最后的dll这取决于.NET 2.0 ......不确定这是否可行。

4 个答案:

答案 0 :(得分:7)

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

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

使用mixed-mode assemblies(同时使用.NET和非托管代码的程序集)是一个例外,它们对CLR更加紧张,可能会导致problems due to the activity policyMSDN)。

答案 1 :(得分:2)

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

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

但要记住的关键是,正在运行的应用程序必须是所有包含程序集的最高版本。这意味着,如果您有4.5个程序集,则无法将您的应用程序作为2.0应用程序运行。它必须是相反的方式。

答案 2 :(得分:1)

听起来你正在寻找并行执行,尤其是进程内并行执行:

In-Process Side-by-Side execution

答案 3 :(得分:0)

是的,你可以加入。那就是CLS做的

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