一旦你设置了 的 的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>
我遇到了同样的错误,并花了很多时间将建议的启动语句添加到我的解决方案中的各种配置文件中,试图隔离框架不匹配。没有任何效果。我还补充道 启动信息到我的XML模式 。这也没有帮助。查看导致问题的实际文件(只会说它被“移动或删除”)显示它实际上是许可证编译器(LC)。
删除违规的licenses.licx文件似乎解决了这个问题。
能够通过添加来解决问题 的 “启动” 强> 元素 的 “useLegacyV2RuntimeActivationPolicy” 强> 属性集。
<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> ...... ....
在将一些代码从VS 2008迁移到VS 2010时,我遇到了类似的问题 对App.config文件进行更改解决了我的问题。
<configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" /> </startup> </configuration>
这个 论坛帖子 在.NET Framework开发人员中心。它可能会提供一些见解。
(添加到应用程序的配置文件。)
<configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> </configuration>
当我们改为时遇到了这个问题 的 Visual Studio 2015 强> 。上述答案都不适用于我们。最后,我们通过添加以下配置文件来实现它 的 机器上的所有sgen.exe可执行文件 强>
<?xml version ="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" /> </startup> </configuration>
特别是在这个位置,即使我们的目标是.NET 4.0:
的 C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6工具 强>
经过3-4小时的谷歌搜索,我找到了解决这个问题的方法。我添加了以下内容
<startup selegacyv2runtimeactivationpolicy="true"> <supportedruntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" /> </startup>
如果这不能解决您的问题,那么 - &gt;在项目参考中 Right Click on DLL 你得到错误的地方 - &gt; Select Properties - &GT; Check the Run-time Version - &GT;如果是 v2.0.50727 那我们就知道了问题。 问题是: - 你有 2.0 Version of respective DLL. 解决方案是: - 你可以 delete the respective DLL 从项目参考,然后 download the latest version of DLL's 从相应的网站添加最新版DLL引用的参考,然后它将工作。
Right Click on 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
以上对我没有用(我正在开发一个网络应用程序) - 但这确实......
编辑文件夹中的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>
如果您正在使用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将能够在运行时通过加载程序发送正确的信息。
我用过这个配置:
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v2.0"/> <supportedRuntime version="v4.0"/> </startup>
为我工作
升级到Visual Studio 2015时遇到此问题,此处发布的解决方案都没有任何区别,尽管配置正确但更改的位置不是。我通过添加此配置修复了此问题:
<startup useLegacyV2RuntimeActivationPolicy="true"> </startup>
要:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config
然后重新启动Visual Studio。
一起使用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.config文件中。
<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> <supportedRuntime version="v2.0.50727"></supportedRuntime> </startup>
我也有这个类库的问题,如果任何人有问题,添加到您的主应用程序的类库。只需添加
<startup useLegacyV2RuntimeActivationPolicy="true">
你的主要应用程序,然后由类库选择。
为了使用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)加载混合模式程序集。没有它,它将无法工作。
useLegacyV2RuntimeActivationPolicy
请注意,这仅适用于混合模式(C ++ / CLI)程序集。您可以加载所有托管CLR 2程序集而不指定此内容 app.config 。
app.config
在此位置添加以下C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 FileName:sgen.exe.config(如果你没找到这个文件,创建并添加一个)
<?xml version ="1.0"?> <configuration> <runtime> <generatePublisherEvidence enabled="false"/> </runtime> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" /> </startup> </configuration>
这样做解决了这个问题