我有一个项目,我想在其中使用某些.NET 4.0功能,但核心要求是我可以使用针对2.X编译的System.Data.SQLite框架。 我看到有可能提及此问题,例如此处接受的答案,但我看不出如何实际实现。
当我尝试在引用2.X程序集的同时运行4.0项目时,我得到:
混合模式程序集是针对运行时的版本“ v2.0.50727”构建的,如果没有其他配置信息,则无法在4.0运行时中加载。
需要什么“附加配置”?
#1楼
通过添加具有“ useLegacyV2RuntimeActivationPolicy”属性集的“ startup”元素可以解决此问题。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
但是必须将其作为App.config中配置标记的第一个子元素才能生效 。
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
......
....
#2楼
上面的代码对我没有用(我正在使用网络应用程序)-但这确实...
编辑文件夹中的sgen.exe.config文件(我必须先创建一个); C:\\ Program Files(x86)\\ Microsoft SDKs \\ 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>
#3楼
如果您正在使用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将能够在运行时通过加载器发送正确的信息。
#4楼
经过3-4个小时的谷歌搜索,我找到了解决此问题的方法。 我添加了以下内容
<startup selegacyv2runtimeactivationpolicy="true">
<supportedruntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
如果这不能解决您的问题,则->在项目参考中, Right Click on DLL
出现错误的DLL-> Select Properties
-> Check the Run-time Version
->如果它是v2.0.50727
那么我们知道问题。 问题是:-您具有2.0 Version of respective DLL.
解决方案是:-您可以从项目引用中delete the respective DLL
,然后从相应的网站download the latest version of DLL's
,并添加最新版本的DLL引用的引用,然后它将起作用。
#5楼
为了使用CLR 2.0 混合模式程序集 ,您需要修改App.Config文件以包括:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
关键是useLegacyV2RuntimeActivationPolicy
标志。 这将导致CLR使用最新版本(4.0)来加载您的混合模式程序集。 没有这个,它将无法工作。
请注意,这仅对混合模式(C ++ / CLI)程序集有效。 您可以加载所有托管的CLR 2程序集,而无需在app.config
指定。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3157897