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

spo*_*son 25 .net .net-4.0 .net-2.0

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

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

Ree*_*sey 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>
Run Code Online (Sandbox Code Playgroud)

话虽这么说,在这种情况下,我建议只使用VS 2010并针对.NET 3.5而不是.NET 4.这将编译CLR 2的程序集,并完全避免这个问题.

  • @MrGrumbe:考虑到OP的问题,我认为这是一个安全的假设. (2认同)