如何在TFS构建中设置$(BuildProjectFolderPath)变量?

4

我感觉我错过了某些非常基础的东西;然而我已经花费了几个小时,却毫无进展。我正在尝试让TFS构建工作,并且我无法弄清楚这个属性从哪里设置。

我从一个暂时不能帮助我的团队成员那里接手了一个TFS 2010项目。

我有一个简单的TFS构建,可以构建一个解决方案。

在tfproj文件中,我有:

<SolutionToBuild Include="$(BuildProjectFolderPath)/MySolution.sln">

这似乎可行,但我无论如何也想不出为什么。我没有在任何地方设置变量 $(BuildProjectFolderPath),也没有任何类似于 MySolution.sln 正确路径的东西。
我已经检查了构建定义、构建脚本和构建服务器上的环境变量,但我无法弄清楚与 $(BuildProjectFolderPath) 相对应的路径来自哪里。
有人能帮我解开这个黑魔法吗?
1个回答

3
您的构建实际上是由MSBuild执行的。当MSBuild启动时,它会初始化一些特定于项目/解决方案的环境类型变量。例如,在构建服务器上,构建代理将在MSBuild中注入其BuildProjectFolderPath值,该值用于解析您的tfsproj文件中的宏。
没有魔法,只是启动处理您的请求的环境提供这些值。 enter image description here

很抱歉,也许我漏看了什么。我已经查看了构建代理配置,并没有看到任何类似于BuildProjectFolderPath或任何与构建相关的路径变量。 - Emil Macarie
大多数(最多)变量由MSBuild在运行时确定,且无法控制。BuildProjectFolderPath是使用构建代理配置的工作目录构建的。我在答案中包含了一个屏幕截图,显示了这个字段。只需将其与您系统上的CMD.EXE进行比较。它具有并可用于计算机启动时基于其运行的系统的许多环境变量。一些值可以被覆盖,而另一些则不能。 - kroonwijk
谢谢。我想这回答了那个问题。我之前没有将这两个目录联系起来。 - Emil Macarie

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