一个.NET 4.0程序集调用.NET 2.0程序集的代码是否存在兼容性障碍?反之亦然?
更具体地说,我正在研究在使用基于.NET 2.0的第三方应用程序时升级到Visual Studio 2010的情况。该应用程序可通过引用我的自定义代码来进行扩展。反之亦然,我的代码将引用应用程序的程序集。
在.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 4.0 程序集可以轻松调用 .NET 2.0 程序集。但是,除非 .NET 4.0 程序集没有利用任何新的框架特性并设置程序集重定向,否则您几乎不可能从 .NET 2.0 调用 .NET 4.0 程序集。