Msbuild 在Teamcity构建开始之前运行rsvars.bat

Msbuild 在Teamcity构建开始之前运行rsvars.bat,msbuild,teamcity,c++builder,Msbuild,Teamcity,C++builder,我有一个C++Builder 2010项目正在使用TeamCity构建。我注意到一些奇怪的错误,在阅读了这些错误之后,我明白我必须在rsvars.bat中设置一些变量。我希望构建脚本在执行实际构建之前执行bat文件来设置环境。我如何才能最好地完成这一点 我可以在文件的最开始使用命令吗?或者有更好的方法吗?您可以创建一个新的生成步骤,然后指定一个自定义的生成步骤顺序,这样新的生成步骤将是第一个 请参见一种方法是在调用rsvars.bat和构建命令的脚本中运行wrap构建。这将使变量在构建执行期间继

我有一个C++Builder 2010项目正在使用TeamCity构建。我注意到一些奇怪的错误,在阅读了这些错误之后,我明白我必须在rsvars.bat中设置一些变量。我希望构建脚本在执行实际构建之前执行bat文件来设置环境。我如何才能最好地完成这一点


我可以在文件的最开始使用
命令吗?或者有更好的方法吗?

您可以创建一个新的生成步骤,然后指定一个自定义的生成步骤顺序,这样新的生成步骤将是第一个


请参见

一种方法是在调用rsvars.bat构建命令的脚本中运行wrap构建。这将使变量在构建执行期间继续存在

但由于我使用TeamCity,我希望它是一个真正的msbuild步骤,而不是用其他东西包装msbuild。我想让buildscript在构建开始时将变量从rsvars.bat设置到机器或用户中,然后在最后删除它们,这并不好

最后,我将配置添加到TeamCity中的构建代理环境配置中,并保持代理之间的安装路径相同。

将它们添加为构建参数->环境变量(在构建配置中),直接且通常有效。生成参数/环境变量将自动设置为运行作业的生成代理上的环境变量

然后,您可以创建构建的模板并重用它


假设所有生成代理上的“路径”都相同,通常情况就是这样。如果不是,您建议由生成代理执行此操作是正确的做法。

当msbuild脚本运行时,从rsvars.bat设置的环境变量似乎不会保留。有什么方法可以告诉他们在同一个会话中运行吗?实际上我自己没有尝试过,无论如何看起来像是几分钟的解决方案,所以请尝试一下,每个构建步骤似乎都在一个单独的过程中运行,因此变量在第二个构建步骤之前不会存在。有趣的一点,感谢您的告知,请告诉我们您是否能找到解决方案,以及我是如何决定解决的。另一个注意事项是,msbuild中的每个目标也在单独的进程中运行。这就解释了为什么一个简单的任务不起作用。你也许可以在每个目标中做一个,但这一点都不好:)最后一个建议是最接近的。。。但是,如果每个构建代理上的“路径”不同,您只需要在构建代理级别执行此操作。