Can .NET 4.0 code interoperate with .NET 2.0 code?

后端 未结 2 1847
独厮守ぢ
独厮守ぢ 2021-02-01 17:21

Are there compatibility barriers with a .NET 4.0 assembly calling code in a .NET 2.0 assembly? And vice versa?

More specifically, I\'m investigating an upgrade to Visua

相关标签:
2条回答
  • 2021-02-01 18:02

    .NET 4.0 assemblies can call .NET 2.0 assemblies with no difficulty. However, it is highly unlikely you will be able to call a .NET 4.0 assembly from .NET 2.0 unless the .NET 4.0 assembly did not take advantage of any new framework features and you setup assembly redirects.

    0 讨论(0)
  • 2021-02-01 18:23

    The CLR, in .NET 4, can consume .NET 2 assemblies and use them properly.

    If you want your .NET 2 application to be able to load .NET 4 assemblies, you'll need to configure it differently. By setting the requiredRuntime to .NET 4, and the legacy load policy, you should be able to force the .NET 2 application to load using CLR 4, which would allow your .NET 4 assemblies to be used.

    Setup your app.config file to include:

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

    That being said, in a situation like this, I'd recommend just using VS 2010 and targetting .NET 3.5 instead of .NET 4. This would compile your assemblies for CLR 2, and avoid this issue entirely.

    0 讨论(0)
提交回复
热议问题