gpt4 book ai didi

msbuild - 在 MsBuild 命令行参数中使用 $(解决方案名称)

转载 作者:行者123 更新时间:2023-12-02 18:30:05 27 4
gpt4 key购买 nike

为了在新的 Build 2015 基于任务的构建中模拟 TFS 2013 的 XAML 构建中的“PerProject”选项,我希望能够将 SolutionName 传递给 msbuild 命令行参数,而不必每次都手动设置它.

我想做这样的事情:

/p:OutputPath=$(Build.BinariesDirectory)\$(SolutionName)\

我希望 MsBuild 推断 $(SolutionName) 参数。但是,当在命令行上传递此内容时,新任务运行程序将用正确的目标路径替换 $(Build.BinariesDirectory) 并保留 $(SolutionName) 。不幸的是,MsBuild 随后也保留了该属性:

Copying file from "obj\Debug\TFSBuild.exe" to "bin\debug\$(SolutionName)\TFSBuild.exe".
TFSBuild -> b\$(SolutionName)\TFSBuild.exe
Copying file from "obj\Debug\TFSBuild.pdb" to "b\$(SolutionName)\TFSBuild.pdb".

我不记得将属性传递到命令行并让它进行后期扩展的方法...有什么提示吗?

对于那些想要模拟 SingleFolderAsConfigured 的人来说,这些很简单:

SingleFolder -> /p:OutputPath="$(Build.BinariesDirectory)"
Asconfigured -> don't pass OutputPath
PerProject -> /p:OutputPath="$(Build.BinariesDirectory)\HARDCODESOLUTIONNAME"

最佳答案

正如我担心的那样,似乎没有一种简单的方法可以从命令行覆盖属性并在评估阶段将另一个属性的值“注入(inject)”到其中。

有几种方法可以解决这个问题,但它们并不理想,对于 MsBuild 支持的每种语言来说当然也不是通用的。可惜了。

我已经调试了 MsBuild 目标文件,并找到了重现 2005/2008 时代旧行为的解决方案。不完全是每个解决方案,但它确实将项目重定向到子文件夹中。

 /p:GenerateProjectSpecificOutputFolder=true /p:OutDirWasSpecified=true
/p:OutputPath=$(Build.BinariesDirectory)

关于msbuild - 在 MsBuild 命令行参数中使用 $(解决方案名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442883/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com