在MSBuild中获取“参考程序集”路径

Dav*_*pak 4 .net msbuild

我正在更新一个与.NET 4.5兼容的版本,而我需要做的更改之一就是更新ilmerge的方式

从上面的链接,这基本上意味着更改:

/targetplatform:"v4,C:\windows\Microsoft.NET\Framework\v4.0.30319"
Run Code Online (Sandbox Code Playgroud)

至:

/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
Run Code Online (Sandbox Code Playgroud)

在我的MSBuild AfterBuild目标中,我正在使用生成前者$(MSBuildToolsPath),如下所示:

/targetplatform:v4,$(MSBuildToolsPath)
Run Code Online (Sandbox Code Playgroud)

将其转换为所需/targetplatform:"v4,C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"路径的最佳方法是什么,以便它可以在x64,x86或可以安装的任何不寻常的地方工作?

Sof*_*ter 5

在目标中添加GetReferenceAssemblyPaths任务。让它将输出保存到项目名称或属性,然后用此新属性替换$(msbuildtoolsPath)。您还可以添加条件检查以确定需要传递给ILMerge的内容。

<GetReferenceAssemblyPaths BypassFrameworkInstallChecks="False" TargetFrameworkMoniker=".NETFramework,Version=v4.0">
    <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="path" />
</GetReferenceAssemblyPaths>
Run Code Online (Sandbox Code Playgroud)