.NET 4.0代码能否与.NET 2.0代码互操作?

25

一个.NET 4.0程序集调用.NET 2.0程序集的代码是否存在兼容性障碍?反之亦然?

更具体地说,我正在研究在使用基于.NET 2.0的第三方应用程序时升级到Visual Studio 2010的情况。该应用程序可通过引用我的自定义代码来进行扩展。反之亦然,我的代码将引用应用程序的程序集。


1
请查看这个问题 - Igby Largeman
2个回答

38

在.NET 4中,CLR可以使用.NET 2程序集并正确地使用它们。

如果您希望您的.NET 2应用程序能够加载.NET 4程序集,则需要进行不同的配置。通过将requiredRuntime设置为.NET 4和legacy load policy,您应该能够强制.NET 2应用程序使用CLR 4进行加载,这将允许您使用.NET 4程序集。

请设置您的app.config文件以包含:

<?xml version="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

话虽如此,在这种情况下,我建议仅使用VS 2010并将目标设置为.NET 3.5,而不是.NET 4。这将使用CLR 2编译您的程序集,并完全避免此问题。


当然,这假定您运行.NET 2.0应用程序的服务器也安装了.NET 4.0。 - cortijon
2
@MrGrumbe:我认为这是一个安全的假设,考虑到OP的问题。 - Jeff Yates

-3

.NET 4.0 程序集可以轻松调用 .NET 2.0 程序集。但是,除非 .NET 4.0 程序集没有利用任何新的框架特性并设置程序集重定向,否则您几乎不可能从 .NET 2.0 调用 .NET 4.0 程序集。


如果你尝试这样做,你会在 VS 中收到一个警告,并可能导致意外行为。 - Beachwalker

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