我想要做的事情类似于:
/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".
我不记得有一种方法可以将属性传递给命令行并进行延迟扩展...有什么提示吗?
对于那些想要模拟SingleFolder
或AsConfigured
的人来说,这很容易:
SingleFolder -> /p:OutputPath="$(Build.BinariesDirectory)"
Asconfigured -> don't pass OutputPath
PerProject -> /p:OutputPath="$(Build.BinariesDirectory)\HARDCODESOLUTIONNAME"
/p:MyOutputPathBaseDir=$(Build.BinariesDirectory)
传递过去,然后在项目文件中将OutputPath属性设置为$(MyOutputPathBaseDir)\$(SolutionName)
如何? - stijn