我正在尝试使用本地TFS 2013为Azure Web作业设置CI。构建服务器本身已完全修补并安装了Build Tools 2017。我在解决方案中尝试了一个独立的Web Jobs项目,以及一个包含Web项目和Web Jobs项目的解决方案。从VS2017开始,发布(在Web项目和Web作业项目的情况下)和发布为WebJobs(在独立的Web作业项目的情况下)工作正常,一切都得到部署。包含NuGet包Microsoft.Web.WebJobs.Publish
。在这两种情况下,本地构建/发布正确发布网站以及app_data/...
文件夹中的作业,但TFS构建甚至不创建app_data
文件夹。似乎用于发布的最终文件集合试图从WebJobs/bin/**
文件夹中挑选文件,这些文件甚至不会在TFS构建中创建。 TFS构建添加了额外的参数/p:OutDir="C:\Builds\2\iPayment.Core\Dev-iPayment.ServiceBus.Agents\Binaries\\
,并且不收集WebJobs的程序集文件,因此不会将其放入app_data/..
。构建参数作为
/p:PublishProfile=ReleaseWebDeploy
/p:_DestinationType=AzureWebSite
/p:DeployOnBuild=True
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
症状类似于http://chamindac.blogspot.com/2015/08/package-azure-web-job-with-tfs-build-to.html中描述的症状,但我的XAML版本与博客文章略有不同,没有任何内容可以覆盖OutDir而不必修改构建模板本身。
在独立的WebJobs项目中,如果我使用不带OutDir的MSBuild命令行,bin/**
将被正确创建和打包并部署到Azure,但该选项对于解决方案都不起作用WebProject和WebJobs是单一解决方案,需要一起部署。另外,我找不到任何方法来清除XAML定义之外的OutDir
。
我已确认webjob-publish-settings.json
(在两种情况下)和webjobs-list.json
(如果解决方案有WebProject以及WebJobs)的存在,这实际上是需要的,并且在VS2017部署中运行良好。发布配置文件也是正确的,VS2017部署使用它。 TFS构建配置为在两种情况下构建解决方案。使用Microsoft.Web.WebJobs.Publish.1.1.0
,这是最新版本。
答案 0 :(得分:0)
事实证明,我们的模板中没有设置OutputPath属性。没有"输出位置"设置为" As Configured"。我最终传递了MSBuild Arguments并修改了模板,以便在两个地方替换$(OutDir)
MSBuildArguments.Replace("$(OutDir)", [BinariesDirectory]))]
和MSBuildArguments.Replace("$(OutDir)", [outputDirectory]))]
分别针对&{34; <mtbwa:MSBuild ...>
&#34;下的Try to Compile the Project
和&#34; For Each Configuration in BuildSettings.PlatformConfigurations
&#34;