我想使用ILMerge将许多.dll合并为构建定义/脚本的一部分。我如何使用TFS 2015做到这一点?
答案 0 :(得分:0)
有很多方法可以做到这一点。这是我发现简单干净的一种方式。我只是将介绍有关将ILMerge进程添加到已成功构建和发布构建工件的现有构建定义的部分。我还将了解ILMerge如何工作以及从何处获取它。
打开构建定义以进行编辑;
添加一个'命令行'构建步骤
点击'添加' '命令行'旁边的按钮并关闭对话框。
注意:只需点击一次即可。获取已添加,但对话框保持打开状态。
在'工具'输入,请指定:$(Build.ArtifactStagingDirectory)\ILMerge.exe
注意:您可能需要根据从哪里获取ILMerge来自定义此路径。请参阅'引用ILMerge'以下部分。
/lib:"C:\Windows\Microsoft.NET\Framework\v4.0.30319" /out:"\\SomeServer\BuildDrops\Builds\$(Build.DefinitionName)\$(Build.BuildNumber)\$(Build.DefinitionName).dll" /log:"\\SomeServer\BuildDrops\Builds\$(Build.DefinitionName)\$(Build.BuildNumber)\MergeLog.txt" $(Build.ArtifactStagingDirectory)\ABC.Services.dll $(Build.ArtifactStagingDirectory)\ABC.Auth.dll $(Build.ArtifactStagingDirectory)\ABC.Lib.dll $(Build.ArtifactStagingDirectory)\ABC.Content.dll $(Build.ArtifactStagingDirectory)\ABC.Test.dll /targetplatform:v4`
引用ILMerge - 注意:有很多方法可以做到这一点,所以我只注意一些。
<强> 1。在构建时从网络中复制ILMerge.exe。 (推荐)
<强> 2。将ILMerge复制到构建客户端计算机,并在构建客户端上为其创建环境变量。
第3。您可能能够找到直接从网络共享引用ILMerge的方法。
<强> 4。将ILMerge的副本添加到您的某个项目中。
因为ILMerge.exe在构建后运行,所以将它放在解决方案中的位置并不重要。
如果将ILMerge.exe放在除其中一个项目的根目录之外的任何位置,则可能需要更新“命令行”中的“工具”路径。构建步骤并且您需要更新参数中的任何路径以反映ILMerge.exe的工作目录。您可能会考虑需要一些&#39; .. \ .. \&#39;在你的路径。我没有测试过。*
参数说明:
/ lib中:&#34; C:\的Windows \ Microsoft.NET \框架\ v4.0.30319&#34;
输入/输出:&#34; \ SomeServer \ BuildDrops \构建\ $(Build.DefinitionName)\ $(Build.BuildNumber)\ $(Build.DefinitionName).dll文件&#34;
日志:&#34; \ SomeServer \ BuildDrops \构建\ $(Build.DefinitionName)\ $(Build.BuildNumber)\ MergeLog.txt&#34;
$(Build.ArtifactStagingDirectory)\ ABC.Auth.dll
/上投放:V4
其他资源: https://www.visualstudio.com/en-us/docs/build/steps/utility/command-line