我有一个项目,我想在其中使用一些。net 4.0的功能,但核心要求是我可以使用System.Data.SQLite框架,它是针对2.X编译的。我看到提到这是可能的,比如这里接受的答案,但我不知道如何实现这一点。

当我只是试图运行我的4.0项目,同时引用2。我得到:

混合模式程序集是根据运行时版本“v2.0.50727”构建的 并且不能在4.0运行时加载 配置信息。

需要什么“额外配置”?


当前回答

在将一些代码从VS 2008迁移到VS 2010时,我也遇到了类似的问题 修改App.config文件为我解决了这个问题。

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
         sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>

其他回答

我在升级到Visual Studio 2015时遇到了这个问题,这里发布的解决方案都没有任何区别,尽管配置是正确的,但更改的位置不是。我通过添加以下配置修复了这个问题:

<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>

到:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\TE.ProcessHost.Managed.exe.config

然后重启Visual Studio。

在将一些代码从VS 2008迁移到VS 2010时,我也遇到了类似的问题 修改App.config文件为我解决了这个问题。

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
         sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
</configuration>

如果您在web服务中工作,v2.0程序集是由WcfSvcHost.exe加载的依赖项,则必须包含

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" />
</startup>

在. .\Microsoft Visual Studio 10.0\Common7\IDE\ WcfSvcHost.exe.config文件

这样,Visual Studio就能够在运行时通过加载器发送正确的信息。

同时使用2.0和4.0程序集并不是很简单。

在app.config中支持的框架声明的ORDER实际上对混合模式抛出的异常有影响。如果你颠倒声明顺序,你会得到混合模式错误。这就是我回答这个问题的目的。

如果你在Windows窗体应用程序中遇到错误,试试这个,大多数是Windows窗体应用程序。

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    <supportedRuntime version="v2.0.50727"></supportedRuntime>
  </startup>

或者项目不是Windows窗体。在Web项目中,将此添加到Web。配置文件。

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"></supportedRuntime>
  </startup>

我使用

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
</startup>

它是工作的,但只是在de </configuration>标签之前,否则启动标签不能正常工作