我有一个项目,我想在其中使用一些。net 4.0的功能,但核心要求是我可以使用System.Data.SQLite框架,它是针对2.X编译的。我看到提到这是可能的,比如这里接受的答案,但我不知道如何实现这一点。
当我只是试图运行我的4.0项目,同时引用2。我得到:
混合模式程序集是根据运行时版本“v2.0.50727”构建的 并且不能在4.0运行时加载 配置信息。
需要什么“额外配置”?
我有一个项目,我想在其中使用一些。net 4.0的功能,但核心要求是我可以使用System.Data.SQLite框架,它是针对2.X编译的。我看到提到这是可能的,比如这里接受的答案,但我不知道如何实现这一点。
当我只是试图运行我的4.0项目,同时引用2。我得到:
混合模式程序集是根据运行时版本“v2.0.50727”构建的 并且不能在4.0运行时加载 配置信息。
需要什么“额外配置”?
当前回答
一旦你设置了app.config文件,visual studio将在bin文件夹中生成一个名为App.exe.config的副本。在部署期间将其复制到应用程序目录。听起来很明显,但令人惊讶的是,很多人都忽略了这一步。WinForms开发人员不习惯配置文件:)。
其他回答
通过添加带有“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>
......
....
同时使用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="v2.0"/>
<supportedRuntime version="v4.0"/>
</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>
如果您在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就能够在运行时通过加载器发送正确的信息。