场景:如何使用MSBuild/TFS2008强制非桌面版本?
我有一个TFS生成(TFS2008),有几个目标覆盖:BuildNumberOverrideTarget,AfterGet,BeforeCompileConfiguration,AfterCompileConfiguration,AfterCompile,AfterDropBuild和AfterEndToEndIteration。一切正常。
但是现在我正在将所有CI移植到Jenkins服务器。我使用的MSBuild插件使用这些参数来调用TFSBuild.proj:
/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal /冗长:正常
问题描述:
我的问题是,只有一些自定义任务正在执行:BeforeCompileConfiguration,AfterCompileConfiguration,AfterCompile。
正如你所看到的,我需要BuildNumberOverrideTarget,AfterGet,AfterDropBuild和AfterEndToEndIteration来执行。
似乎只编译关于它的任务和自定义任务正在执行。从TFS触发的构建视为非桌面构建,而由Jenkins触发的构建则视为桌面构建。
我到现在为止所尝试过的。
如果我从本地.cmd文件运行构建,则会发生相同的行为。所以我认为IsDesktopBuild属性是一个问题。这msdn link的进一步阅读给我的线索,当读取
为“只有编译和测试(如果已启用)执行”
。所以我尝试添加自己的财产强制DesktopBuild:
/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal /冗长:正常/属性:IsDesktopBuild =真
但行为是一样的,只是执行的任务:BeforeCompileConfiguration,AfterCompileConfiguration,AfterCompile
所以我的问题是双重:
- 任何人都知道如何从命令行强制桌面生成?(看起来/property:IsDesktopBuild = true是不够的)
- 如果IsDesktopBuild不是问题,想知道为什么一些自定义任务不会触发?
然后,我如何强制执行这些任务(BuildNumberOverrideTarget,AfterGet,AfterDropBuild和AfterEndToEndIteration)来执行? –
/property:IsDesktopBuild = false –
如果你把/属性:IsDesktopBuild = false目标(BuildNumberOverrideTarget,AfterGet,AfterDropBuild和AfterEndToEndIteration)不执行... –