2012-11-20 67 views
1

我必须使用在Visual Studio中预生成事件,以无论是从模板版本文件复制到编译版本,或者调用工具将文件翻译 - 这取决于我是否我在调试或发布模式。 由于之前在这里找到,我用调试开关宏观变量未设置

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以某种方式隐藏了这些变量。

是否有任何已知的问题呢?

回答

0

我知道有针对.sln文件生成时的MSBuild和devenv.exe的差异明显。例如,msbuild驱动构建不会构建Visual Studio部署项目。我无法确定预制步骤中的效果是什么。

我建议改变你的TeamCity构建步骤,而不是使用的MSBuild devenv.exe的(可能需要一个命令行构建步骤),只是看它是否效果更好。

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

+0

我使用$(PROJECTDIR)\ ..代替,并试图摆脱DevStudio的宏:/ – Slesa