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

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

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

需要什么“额外配置”?


当前回答

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

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>

其他回答

一旦你设置了app.config文件,visual studio将在bin文件夹中生成一个名为App.exe.config的副本。在部署期间将其复制到应用程序目录。听起来很明显,但令人惊讶的是,很多人都忽略了这一步。WinForms开发人员不习惯配置文件:)。

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

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>

我使用这样的配置:

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

为我工作

上面的方法对我没用(我正在开发一个web应用程序)——但是这个方法有用……

编辑文件夹中的sgen.exe.config文件(我必须先创建一个); C:\Program Files (x86)\Microsoft sdk \Windows\v8.0A\bin\NETFX 4.0工具 (也有一个在v7.0文件夹,但我不需要改变,我使用VS2012)

XML的内容应该如下所示(与前面的回答相同)

<?xml version ="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup>
</configuration>

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

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

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