假设我有一个旧的应用程序,它将尝试加载外部程序集。
我希望能够在CLR 4中运行那个旧的应用程序。我记得有一些xml manifest magic参与其中。
如何创建清单xml文件以告知oldapplication.exe应在CLR 4下运行?
我找到了一些建议,但它们似乎对我不起作用。
oldapplication.exe.config:
<?xml version ="1.0"?>
<configuration>
<startup>
<!--set the appropriate .net version-->
<requiredRuntime version="4.0.0.0"/>
</startup>
</configuration>
在拍摄另一张照片时,我发现此文件用作我的模板:
C:\的Windows \ Microsoft.NET \框架\ v4.0.20506 \ Aspnet_regsql.exe.config
<?xml version ="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.20506"/>
<requiredRuntime version="v4.0.20506" safemode="true"/>
</startup>
</configuration>
我还更新了代码以报告当前的CLR:
Console.WriteLine(typeof(object).Assembly.ImageRuntimeVersion);
现在有效!
答案 0 :(得分:8)
您需要提供正确的版本号。请注意,这是beta 1版本,它将更改,直到RTM结算一个:
<configuration>
<startup>
<supportRuntime version="4.0.20506"/>
</startup>
</configuration>
答案 1 :(得分:1)
我相信你想使用supportedRuntime,而不是requiredRuntime。
“&lt; supportedRuntime&gt;元素应该由使用1.1版或更高版本的运行时构建的所有应用程序使用。” (http://msdn.microsoft.com/en-us/library/a5dzwzc9.aspx)。确保版本字符串与所需版本的“安装文件夹名称”完全匹配。
答案 2 :(得分:1)
有些人在2013年通过谷歌找到此页面
配置文件要点
https://gist.github.com/1223509
博客文章
http://yzorgsoft.blogspot.com/2011/09/greenshot-on-windows-8-net-45.html
<?xml version ="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319" />
<requiredRuntime version="v4.0.30319" safemode="true"/>
</startup>
<runtime>
<relativeBindForResources enabled="true" />
<UseSmallInternalThreadStacks enabled="true" />
<DisableMSIPeek enabled="true"/>
</runtime>
</configuration>
此配置文件是从Visual Studio 2012中提取的,因此它具有一些额外的COM兼容性和性能调整。对于运行托管代码的环境,您应该删除<runtime>
部分。