与.NET 4.0程序集中的.NET 4.0程序集调用代码是否存在兼容性障碍?反之亦然?
更具体地说,我在研究使用基于.NET 2.0的第三方应用程序时对Visual Studio 2010的升级。该应用程序可以通过引用我的自定义代码的钩子进行扩展。反之亦然,我的代码将引用应用程序的程序集。
答案 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程序集。