这就是我的.csproj AfterBuild的样子:
<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release'">
<Exec Command=""..\Tools\ILMerge\ILMerge.exe" /internalize /ndebug /out:@(MainAssembly) /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 "@(IntermediateAssembly)" @(ReferenceCopyLocalPaths->'"%(FullPath)"', ' ')" Condition=" '$(TargetFrameworkVersion)' == 'v4.0'" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我正在运行64位Windows.我尝试过更改.NET Framework ...\Microsoft.NET\Framework\...,...\Microsoft.NET\Framework64\...但它没有帮助.
我还在ILMerge目录中创建了ILMerge.exe.config:
<?xml version ="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
为什么ILMerge不能生成4.0.30319程序集?
编辑:此问题已于2011年5月2日发布的v2.11.0502中修复,因此我删除了自定义版本的下载链接.
我修复了ILMerge.exe(v2.10.0526),以便它设置目标运行时版本v4.0.30319而不是v4.0.20926.您可以从以下链接下载ILMerge.exe的固定版本:
(链接已删除,请在此处下载正式版)
像往常一样使用此参数运行它
/targetplatform:v4,c:\Windows\Microsoft.NET\Framework\v4.0.30319
Run Code Online (Sandbox Code Playgroud)
输出程序集现在将以v4.0.30319为目标.我已经用Reflector检查过了,没关系.让我知道你的结果.
请注意,您不需要使用ILMerge.exe.config,我想它是用于运行带有.Net 4框架的ILMerge.exe本身,但这并不意味着它会强制ILMerge.exe生成.Net 4程序集.输出程序集的目标框架版本仅使用/ targetplatform参数控制.
| 归档时间: |
|
| 查看次数: |
5069 次 |
| 最近记录: |