Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MSBuild/TFS2008强制非桌面生成?_Msbuild_Jenkins_Msbuild Task - Fatal编程技术网

如何使用MSBuild/TFS2008强制非桌面生成?

如何使用MSBuild/TFS2008强制非桌面生成?,msbuild,jenkins,msbuild-task,Msbuild,Jenkins,Msbuild Task,场景: 我有一个TFS构建(TFS2008),它有几个目标覆盖:buildNumberOverferridTarget、AfterGet、BeforeComileConfiguration、AfterCompileConfiguration、AfterCompile、AfterDropBuild和AfterEndToEndIteration。一切正常 但现在我将所有CI移植到Jenkins服务器。我使用MSBuild插件使用以下参数调用TFSBuild.proj: /文件记录器 /fileLog

场景:

我有一个TFS构建(TFS2008),它有几个目标覆盖:buildNumberOverferridTarget、AfterGet、BeforeComileConfiguration、AfterCompileConfiguration、AfterCompile、AfterDropBuild和AfterEndToEndIteration。一切正常

但现在我将所有CI移植到Jenkins服务器。我使用MSBuild插件使用以下参数调用TFSBuild.proj:

/文件记录器 /fileLoggerParameters:LogFile=TFSBuild\u DesktopBuild.log;创造;编码=UTF-8;冗长=正常 /冗长:正常

问题描述:

我的问题是只执行了一些自定义任务:编译前配置、编译后配置、编译后

正如您所看到的,我需要执行buildnumberroverridetarget、AfterGet、AfterDropBuild和afterendtoendition

似乎只执行编译任务和与之相关的自定义任务。从TFS触发的生成被视为非桌面生成,而从Jenkins触发的生成被视为桌面生成

我迄今为止一直在尝试的。

如果从本地.cmd文件运行构建,同样的行为也会发生。因此,我认为IsDesktopBuild属性存在问题。进一步阅读这篇文章给了我阅读的线索

“仅执行编译和测试(如果已启用)

。因此,我尝试自己添加属性以强制DesktopBuild:

/文件记录器 /fileLoggerParameters:LogFile=TFSBuild\u DesktopBuild.log;创造;编码=UTF-8;冗长=正常 /详细性:正常/property:IsDesktopBuild=true

但行为是相同的,只执行任务:编译前配置、编译后配置、编译后

所以我的问题是双重的:

  • 有人知道如何从命令行强制桌面构建吗?(似乎/property:IsDesktopBuild=true还不够)
  • 如果IsDesktopBuild不是问题所在,那么您知道为什么一些自定义任务没有触发吗

  • 你不应该试图强制桌面构建。事实上,您应该朝相反的方向前进——强制非桌面构建

    桌面版本是默认版本。这意味着,默认情况下IsDesktopBuild=true。所以没有必要显式地设置它

    当TFS Build执行生成时,它将false传递给IsDesktopBuild

    要让Jenkins运行与TFS Build相同的任务,您应该让它将false传递给IsDesktopBuild。而不是:

    /fileLogger/fileLoggerParameters:LogFile=TFSBuild\u DesktopBuild.log;创造;编码=UTF-8;详细性=正常/详细性:正常/属性:IsDesktopBuild=true

    应将IsDesktopBuild设置为false:

    /fileLogger/fileLoggerParameters:LogFile=TFSBuild\u DesktopBuild.log;创造;编码=UTF-8;详细性=正常/详细性:正常/属性:IsDesktopBuild=false


    为什么只是明确地指定您想要的目标? /t:buildnumberroverridetarget;后继;编译前配置;编译后的配置等
    除了您提到的参数之外?

    那么,我如何强制执行这些要执行的任务(BuildNumberOverrideTarget、AfterGet、AfterDropBuild和AfterEndToEndEndEndEndEndDieration)?/property:IsDesktopBuild=false如果您放置/property:IsDesktopBuild=false目标(BuildNumberOverrideTarget、AfterGet、AfterDropBuild和AfterEndToEndEndEndEndEndEndEndEndEndEndEndDieration)不要执行。。。