1

我必须在 Visual Studio 中使用 Pre-Build 事件,以便将文件从模板版本复制到可编译版本,或者调用工具来翻译文件 - 取决于我处于调试模式还是发布模式。如前所述,我使用了调试开关

if $(ConfigurationName) == Debug goto :debug

$(SolutionDir)\Tools\MyTool\Translate -i $(ProjectDir)\Themes\Generic.Template.xaml -o $(ProjectDir)\Themes\Generic.xaml 

goto :end

:debug

copy /y $(ProjectDir)\Themes\Generic.Template.xaml $(ProjectDir)\Themes\Generic.xaml

:end

只要我使用本地的 Visual Studio,一切正常。但是使用 TeamCity 构建时,Studio 宏变量设置不正确。Visual Studio 本身未安装在构建服务器上。作为构建脚本,我们使用 f#make,它使用解决方案文件调用 msbuild。在本地调用构建批处理也可以完美运行,因此 TeamCity 似乎以某种方式隐藏了这些变量。

是否有任何已知问题?

4

1 回答 1

0

我知道在针对 .sln 文件构建时,msbuild 和 devenv.exe 之间存在明显差异。例如,msbuild 驱动的构建不会构建 Visual Studio 部署项目。我不能确定预构建步骤中的效果是什么。

我建议将您的 TeamCity 构建步骤更改为使用 devenv.exe 而不是 msbuild(可能需要命令行构建步骤),然后看看它是否工作得更好。

TeamCity 提供了一些内置的构建参数,可帮助您在代理上找到 devenv.exe 的正确路径。它们是 env.VS100COMNTOOLS 和 VS2010_Path。

于 2012-12-02T16:50:22.027 回答