我正在更新一个与.NET 4.5兼容的版本,我需要做的一个更改是updating how I call ilmerge。
从上面的链接,这基本上意味着改变:
/targetplatform:"v4,C:\windows\Microsoft.NET\Framework\v4.0.30319"
为:
/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
在我的MSBuild AfterBuild目标中,我使用$(MSBuildToolsPath)
生成前者,如下所示:
/targetplatform:v4,$(MSBuildToolsPath)
将此转换为所需/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
路径的最佳方法是什么,以便它可以在x64,x86或任何可以安装的异常位置上运行?
答案 0 :(得分:5)
在目标中添加GetReferenceAssemblyPaths任务。将输出保存到项目名称或属性,并将$(msbuildtoolsPath)替换为此新属性。您还可以添加条件检查以确定需要传递给ILMerge的内容。
<GetReferenceAssemblyPaths BypassFrameworkInstallChecks="False" TargetFrameworkMoniker=".NETFramework,Version=v4.0">
<Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="path" />
</GetReferenceAssemblyPaths>
答案 1 :(得分:0)
如果您可以找到包含信息的注册表项(或您需要的信息的重要元素),那么我将使用$(Registry:<key name>[@<value name>])
语法来获取它。
http://blogs.msdn.com/b/msbuild/archive/2007/05/04/new-registry-syntax-in-msbuild-v3-5.aspx