.net - 在 MSBuild 中获取 "Reference Assemblies"路径

标签 .net msbuild

我正在更新一个版本以与 .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 或它可以安装的任何不寻常的地方工作?

最佳答案

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

<GetReferenceAssemblyPaths BypassFrameworkInstallChecks="False" TargetFrameworkMoniker=".NETFramework,Version=v4.0">
    <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="path" />
</GetReferenceAssemblyPaths>

关于.net - 在 MSBuild 中获取 "Reference Assemblies"路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11261813/

相关文章:

msbuild - 如何让 MSBuild 安静输出但带有错误/警告摘要

command-line - MSBuild:命令行生成错误:解决方案文件错误 MSB5023:解析嵌套项目部分时出错

.net - 无法在 TeamCity 中构建应用程序 (.NET Framework 4.6.2)

c# - 在 SQL 中重新创建 .NET 舍入行为

.net - 如何绑定(bind)到列表中的最后一项?

c# - 查找具有特定属性的所有类

.net - PowerShell:一种创建闭包的优雅方式

security - 如何确保 azure webjob 代码执行的安全?

.net - 如何在 Silverlight/WPF 中反转裁剪几何体?

c# - 如何使用 Roslyn MSBuildWorkspace 查找 C# 项目的 'obj' 目录?