msbuild的行为与命令行vs Jenkins不同

时间:2017-01-10 11:32:12

标签: jenkins msbuild azure-webjobs msbuild-4.0 webjob

我有一个Jenkins工作,可以创建和部署网站包。

当我从Jenkins运行作业时,它为每个项目创建一个包,部署包不包含webjobs。但是,从命令行执行相同的msbuild命令会创建一个更大的包文件,包括其中的webjobs。

我尝试使用相同的用户帐户Jenkins服务运行msbuild命令行,并且也可以正常工作。

如果我比较两个msbuild输出日志,我会得到一些差异,这是命令行msbuild日志包含的主要区别:

Target "DiscoverWebJobs" in file "E:\Jenkins\jobs\Queue - Publish\workspace\tvdQueue\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.wap.targets" from project "E:\Jenkins\jobs\Queue - Publish\workspace\tvdQueue\WebAPI\WebAPI.csproj" (target "Build" depends on it):
    Task "Message"
      WebJobs: reading [E:\Jenkins\jobs\Publish job\workspace\Project\WebAPI\Properties\webjobs-list.json]
    Done executing task "Message".
    Using "ReadWebJobsConfigFile" task from assembly "E:\Jenkins\jobs\Publish job\workspace\Project\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\Microsoft.Web.WebJobs.Publish.Tasks.dll".
    Task "ReadWebJobsConfigFile"
    Done executing task "ReadWebJobsConfigFile".
    Task "Message"
      WebJobs: WebJobs found: [../blah1.csproj;../blah2.csproj;../blah3.csproj;]
    Done executing task "Message".
    Done building target "DiscoverWebJobs" in project "WebAPI.csproj"

我试图在Jenkins命令行中添加目标“DiscoverWebJobs”,但它说它无法找到...我花了很多时间尝试不同的选项,从不同的帐户运行,使用PowerShell,...但是没什么,我肯定是傻事。

如果zip包文件不包含webjobs文件,当我进行部署时,它不会更新webjobs。我可以单独部署每个zip文件,但是有一些webjobs,如果有人包含一个新的,它将不会被部署,使得该项目的持续集成设置无用。

2 个答案:

答案 0 :(得分:1)

Microsoft WebJobs Publish 1.0.12 nuget包中检查webjobs.wap.targetswebjobs.targets,以下msbuild参数会影响DiscoverWebJobs目标是否运行。您可以使用msbuild的/p:开关设置/覆盖它们的值。

  • SkipApp_DataFolder(需要False
  • WebJobsExtendWebPublish(需要true
  • WebJobsConfigFile(文件需要存在于该路径中)

如果存在以下文件,则不需要设置/覆盖最后一个文件:E:\Jenkins\jobs\Queue - Publish\workspace\tvdQueue\WebAPI\Properties\webjobs-list.json

答案 1 :(得分:1)

终于工作了!我的修复方法是删除解决方案中所有csproj文件中的重复“Microsoft.Web.WebJobs.Publish”目标导入。

< Import Project =“.. \ packages \ Microsoft.Web.WebJobs.Publish.1.0.11 \ tools \ webjobs.targets”Condition =“Exists('.. \ packages \ Microsoft.Web。 WebJobs.Publish.1.0.11 \ tools \ webjobs.targets')“/>

<Import Project="..\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.targets" Condition="Exists('..\packages\Microsoft.Web.WebJobs.Publish.1.0.12\tools\webjobs.targets')" />

我有1.0.11和1.0.12版本所以我删除了旧版本,它创建了包括webjobs的完整包。

不确定为什么从Jenkins运行msbuild或从同一台机器的命令行运行会对这些重复的目标产生任何不同的影响但是......

相关问题