在4中使用3.5组件

Met*_*bie 3 .net c# .net-4.0 .net-3.5 c#-4.0

我有一个在使用.Net framework 3.5时可以正常工作的程序集,但是在4中使用它时会出现无法加载程序集的错误.有谁知道这个问题的解决方案?(我无论如何都无法更改程序集或更改项目目标框架,因为这会删除应用程序的目的)编程代码是c#.

基本上:我在.Net 4框架中创建一个应用程序,但程序集与它不兼容.

以下错误:使用运行时版本v2.0.50727创建具有混合模式的程序集,如果没有运行时版本4.0中的额外配置信息,则无法加载.

Rom*_*ain 6

最好的方法可能是在Visual Studio 2010中重新编译.NET 4.0的类库(即打开项目,转换它,以及更改目标框架.)

如果您不能或不会这样做,那么您可以尝试将以下内容添加到.NET 4.0应用程序的app.config文件中:

在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)

关键是useLegacyV2RuntimeActivationPolicy标志.这会导致CLR使用最新版本(4.0)加载混合模式程序集.没有它,它将无法工作.

请注意,这仅适用于混合模式(C++/CLI)程序集.您可以加载所有托管的CLR 3.5程序集,而无需在app.config中指定它.