Chr*_*edh 10 .net msbuild ilmerge .net-4.5 visual-studio-2012
我们想要将几个项目的解决方案升级到.NET 4.5.我们已经使用Visual Studio 2012.我们使用ILMerge将程序集合并到单个EXE.
我们当前主项目的.csproj文件如下所示:
<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
<CreateItem Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)'=='.dll'">
<Output ItemName="AssembliesToMerge" TaskParameter="Include" />
</CreateItem>
<PropertyGroup>
<ReferenceAssemblies>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0</ReferenceAssemblies>
</PropertyGroup>
<Message Importance="high" Text="Executing ILMerge...with target platform from $(ReferenceAssemblies)" />
<Exec Command=""$(SolutionDir)LIB\ILMerge.exe" /out:@(MainAssembly) /internalize /targetplatform:v4,"$(ReferenceAssemblies)" "@(IntermediateAssembly)" @(AssembliesToMerge->'"%(FullPath)"', ' ')" />
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这应该如何看待.NET 4.5?
我在这里读到使用ILMerge和.NET 4.5存在一些问题.
Chr*_*edh 12
我找不到任何关于此的好文档,但正如Matt Wrocks博客文章和关于ILMerge的另一个问题所建议的那样,我首先尝试使用与.NET 4相同的参考组件路径.
在将我们的NuGet包重新定位到.NET 4.5之前,这似乎首先起作用.(特别是Microsoft.AspNet.WebApi.Client,它添加了对新的.NET 4.5程序集System.Net.Http.WebRequest的引用,该程序集之前包含在NuGet包中.)
更新参考程序集到.NET 4.5的路径后,它工作:
C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.5
<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release' ">
<CreateItem Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)'=='.dll'">
<Output ItemName="AssembliesToMerge" TaskParameter="Include" />
</CreateItem>
<PropertyGroup>
<ReferenceAssemblies>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5</ReferenceAssemblies>
</PropertyGroup>
<Message Importance="high" Text="Executing ILMerge...with target platform from $(ReferenceAssemblies)" />
<Exec Command=""$(SolutionDir)LIB\ILMerge.exe" /out:@(MainAssembly) /internalize /targetplatform:v4,"$(ReferenceAssemblies)" "@(IntermediateAssembly)" @(AssembliesToMerge->'"%(FullPath)"', ' ')" />
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,.NET 4程序集的路径也可以工作,但在.NET 4.5中引用新程序集时,需要更新路径.
请注意,在示例中,ILMerge.exe将下载到名为LIB的解决方案目录中的文件夹中.
| 归档时间: |
|
| 查看次数: |
14378 次 |
| 最近记录: |