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

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

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

需要什么“额外配置”?


当前回答

如果您在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就能够在运行时通过加载器发送正确的信息。

其他回答

通过添加带有“useLegacyV2RuntimeActivationPolicy”属性集的“startup”元素能够解决这个问题。

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

但是必须将它作为App.config中configuration标签的第一个子元素才能生效。

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

这取决于你的目标框架的版本,你可能想看看这里得到正确的字符串:

http://msdn.microsoft.com/en-us/library/ee517334.aspx

我浪费了很多时间试图弄清楚为什么我针对。net 4.0客户端发布的版本需要完整版本。 最后我用了这个:

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

这个论坛贴在。net框架开发者中心。这可能会提供一些见解。

(添加到应用程序的配置文件中。)

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

我也有这个问题与类库,如果有人有问题与类库添加到您的主应用程序。只需添加

<startup useLegacyV2RuntimeActivationPolicy="true">

到你的主应用程序,然后由类库选择。

我使用

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

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