18

在我继承的项目中,原始开发人员在他的 Visual Studio 项目中使用了许多构建后事件来复制 DLL 和在 VS 中构建时的东西。

现在我正试图将这些东西移到 TFS 2010 构建系统中,这引起了一些悲伤。

我希望能够创建一个新的“连续”项目配置,并在该配置中从 Visual Studio 中排除那些构建后事件 - 但似乎这些调用无法根据您的项目配置进行配置......

有任何想法吗?有什么我可以检查以知道我在 TFS Build 下运行然后跳过那些 CMD 文件吗?任何想法都将受到欢迎!

4

3 回答 3

26

我的方法是用这个来保护构建前或构建后的代码

IF "$(BuildingInsideVisualStudio)"=="true" ( …你的代码在这里… )

该变量由 Visual Studio 自动定义,您无需更改构建定义。

于 2011-05-26T10:31:32.740 回答
14

我使用类似的方法来做到这一点。我将以下内容添加到每个项目的构建后步骤中:

if '$(TeamBuild)'=='True' exit 0

然后在配置构建定义时,我只需添加:

/p:TeamBuild=True

...到 MSBuild 参数。

这使我可以灵活地保留项目中的所有配置和构建定义。

于 2011-04-12T17:08:19.333 回答
6

如果您在团队构建服务器上设置环境变量,然后您可以在构建后的步骤中写入检查以检查该环境变量会怎样。如果设置了环境变量,您将知道跳过执行构建后步骤的命令文件,因为您知道您正在 TFS 构建下运行。

您可以将所有后期构建步骤合并到一个脚本中,然后只需检查该脚本开头的环境变量。

或者您可以以相反的方式执行此操作并将检查构建到您的 TFS 构建脚本中。您可以参考此处了解如何检查 TFS 构建中的环境变量。

因此,在您的 TFS 构建脚本中,您将拥有如下内容:

<RunScripts Condition=" '$(RunScriptsServerVar)' != '' ">
            the environment var is NOT set, so run your scripts since we aren't in
            a TFS build
</RunScripts>
于 2011-02-21T17:18:25.243 回答