.NET 2.0的程序集能否在.NET 4.0下运行?

5
我开发了一个.NET解决方案,其中包含多个程序集,大部分是小型辅助程序集,针对.NET Framework 2.0版本。其余的程序集是MVC 3 Web应用程序,必须针对.NET Framework 4.0版本。我的解决方案除了.NET和MVC框架之外没有其他外部依赖。
我的问题是:当我将这个解决方案部署给客户时,我是否需要同时部署.NET Framework的两个版本,还是只需部署4.0版本即可?.NET 2.0程序集能否在.NET 4.0下运行?

所有三个答案都是同样有效的,但是由于我只能接受一个,所以我接受了最先发布的那个。 - isekaijin
4个回答

7

是的,嵌入在.NET 2.0程序集中的依赖项会自动转换为它们的4.0版本。但它运行的是从未经过测试的那些程序集的版本。它们高度兼容,但包含了若干个错误修复,这些错误修复可能是你不知不觉地依赖的。没有人能给你100%的保证。

只需尝试一下。


幸运的是,我的.NET 2.0程序集非常简单。它们中的大部分只是普通的数据类型,即MVC应用程序的模型;而那些不仅仅是POD类型的少数辅助类,则是从数据库检索数据并将其填充到这些POD类型实例中的帮助器类。 - isekaijin

3
你只需要最新版本。它向下兼容。

这是一个合格的事实。请看下面我的回答。 - mhvelplund

1

答案是肯定的,为.NET 2.0开发的程序集可以在.NET 4.0下正确运行。


0

是和否(至少对于 .Net 4.5 是这样)。虽然它具有向后兼容性,但默认情况下会在关联的 .Net 版本上运行代码,如 here 所述:

.NET Framework 4.5 及其点发布版本与使用早期版本 .NET Framework 构建的应用程序向后兼容。换句话说,使用以前版本构建的应用程序和组件可以在.NET Framework 4.5 上无需修改即可运行。不过,默认情况下,应用程序会在为其开发的公共语言运行时版本上运行,因此您可能需要提供配置文件来启用您的应用程序在.NET Framework 4.5 上运行。有关更多信息,请参见本文前面的应用程序版本兼容性部分。

添加了 MyLovely.exe.config 文件之后,一切都正常工作了:

<configuration>
  <startup>
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接