是否有一个单一的MSBuild和TFSBuild变量可以指向二进制文件所在的位置?

7
有没有一个属性可以在Visual Studio构建或TFS构建中使用,它总是指向二进制文件的位置?
意思是,当我在Visual Studio中构建时,它将指向C:\MySolution\MyProject\bin\Release,而在TFS Build中,它将指向C:\Build\Path\MySoution\Binaries
如果没有这样的属性,为什么没有?这似乎是一个常见的基本需求/功能。
1个回答

8

有一个$OutDir属性,您可以在诸如后期构建事件之类的事情中使用它。

在VS2010构建中,它将是从当前项目到二进制文件的相对路径,因此例如为"bin\Debug\"。(输出的完整路径是$TargetDir,即$(ProjectDir)\$(Outdir))。

在TFS构建期间,$OutDir被覆盖以指向放置二进制文件的路径:

 <OutDir Condition=" '%(ConfigurationToBuild.PlatformToBuild)' != 'Any CPU' ">$(BinariesRoot)\%(ConfigurationToBuild.PlatformToBuild)\%(ConfigurationToBuild.FlavorToBuild)\</OutDir>
 <OutDir Condition=" '%(ConfigurationToBuild.PlatformToBuild)' == 'Any CPU' ">$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)\</OutDir>

编辑:

无论哪种情况,要获取完整路径的一种方法是使用以下代码:

IF '$(BuildingInsideVisualStudio)'=='true' (
  COPY SomeFile $(TargetDir)$(OutDir)
) ELSE (
  COPY SomeFile $(OutDir)
)

但是outdir是相对路径。我真的想要一个完整的路径。如果您的解决方案中有子目录中的项目,则使用相对路径变得困难。 - Vaccano
我不确定你需要在哪里使用这个属性,所以很难给你一个更好的答案;例如,在后期构建事件中,该属性将相对于正在运行的任何项目。无论哪种情况,我都会更新我的答案,提供获取完整路径的方法。 - Michael Edenfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接