2012-02-03 22 views
7

有没有一个属性可以用在Visual Studio的内部版本或TFS版本中,该版本会始终指向二进制文件的位置?是否有一个MSBuild和TFSBuild变量指向二进制文件的位置?

意思,当我建立在Visual Studio将指向C:\ MySolution \ MyProject的\ BIN \发布,并在TFS构建它将指向C:\建造\路径\ MySoution \二进制文件

如果没有,为什么不呢?这似乎是一种常见的基本需求/特征。

回答

8

有一个$OutDir属性,您可以将它用于事后构建事件。

在VS2010版本中,它将是从当前项目到二进制文件的相对路径,因此它将是“bin \ Debug \”。 (输出的完整路径是$ TargetDir,它是$(ProjectDir)\ $(Outdir))。

$ OUTDIR是TFS中重写建立指向的路径在那里把你的二进制文件:

<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) 
) 
+0

但outdir是相对的。我真的很喜欢完整的路径。如果您的解决方案中的子目录中有项目,则相对路径变得难以使用。 – Vaccano 2012-02-03 18:17:45

+0

我不确定你需要使用这个属性的确切位置,所以很难给你一个更好的答案。在生成后事件中,例如,该属性将与任何正在运行的项目有关。在任何一种情况下,我都会用一种方式更新我的答案,以获得完整的路径。 – 2012-02-03 18:40:30

相关问题