.NET 4.0代码可以与.NET 2.0代码互操作吗?

时间:2010-04-15 16:37:08

标签: .net .net-2.0 .net-4.0

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

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

2 个答案:

答案 0 :(得分:38)

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

如果您希望.NET 2应用程序能够加载.NET 4程序集,则需要以不同方式配置它。通过将requiredRuntime设置为.NET 4和旧版加载策略,您应该能够强制使用CLR 4加载.NET 2应用程序,这将允许您使用.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的程序集,并完全避免这个问题。

答案 1 :(得分:-3)

.NET 4.0程序集可以毫无困难地调用.NET 2.0程序集。但是,除非.NET 4.0程序集没有利用任何新的框架功能并且您设置了程序集重定向,否则您很可能无法从.NET 2.0调用.NET 4.0程序集。