我有一个项目,其中我想使用一些.NET 4.0功能,但核心要求是我可以使用针对2.X编译的System.Data.SQLite框架.我看到提到这是可能的,例如这里接受的答案,但我不知道如何实际实现这一点.
当我在参考2.X程序集时尝试运行我的4.0项目时,我得到:
混合模式程序集是针对运行时的版本"v2.0.50727"构建的,如果没有其他配置信息,则无法在4.0运行时加载.
什么"附加配置"是必要的?
要使用CLR 2.0 混合模式程序集,您需要修改App.Config文件以包含:
useLegacyV2RuntimeActivationPolicy="true">
关键是useLegacyV2RuntimeActivationPolicy
国旗.这会导致CLR使用最新版本(4.0)加载混合模式程序集.没有它,它将无法工作.
请注意,这仅适用于混合模式(C++/CLI)程序集.您可以加载所有托管CLR 2程序集而不指定此内容app.config
.
此论坛帖子位于.NET Framework开发人员中心.它可能会提供一些见解.
(添加到应用程序的配置文件.)
根据您所针对的框架的版本,您可能希望在此处获取正确的字符串:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
我浪费了几个小时试图弄清楚为什么我的发布目标.Net 4.0客户端需要完整版本.我最后用这个:
设置app.config文件后,visual studio将在名为App.exe.config的bin文件夹中生成一个副本.在部署期间将其复制到应用程序目录.听起来很明显但令人惊讶的是很多人都错过了这一步.WinForms开发人员不习惯配置文件:).
一起使用2.0和4.0程序集并不是一件容易的事.
app.config中受支持的框架声明的ORDER实际上对抛出混合模式的异常有影响.如果您翻转声明顺序,您将收到混合模式错误.这就是这个答案的目的.
因此,如果您在Windows窗体应用程序中收到错误,请尝试此操作,主要是Windows窗体应用程序.
或者,如果项目不是Windows窗体.在Web项目中,将其添加到web.config文件中.
能够通过添加"startupLegacyV2RuntimeActivationPolicy"属性集的"startup"元素来解决问题.
但是必须将它作为App.config中配置标记的第一个子元素才能生效.
...... ....
以上对我没有用(我正在开发一个网络应用程序) - 但这确实......
编辑文件夹中的sgen.exe.config文件(我必须先创建一个); C:\ Program Files(x86)\ Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools(v7.0文件夹中也有一个,但我不需要更改那个,我使用的是VS2012)
XML的内容应该如下所示(在之前的答案中相同)
如果您正在使用Web服务并且v2.0程序集是由WcfSvcHost.exe加载的依赖项,那么您必须包含
在..\Microsoft Visual Studio 10.0\Common7\IDE\WcfSvcHost.exe.config文件中
这样,Visual Studio将能够在运行时通过加载程序发送正确的信息.