发布到Azure的WebJobs不会创建App_Data目录结构

时间:2018-03-13 20:12:49

标签: azure tfs msbuild azure-webjobs

我正在尝试使用本地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,这是最新版本。

1 个答案:

答案 0 :(得分:0)

事实证明,我们的模板中没有设置OutputPath属性。没有"输出位置"设置为" As Configured"。我最终传递了MSBuild Arguments并修改了模板,以便在两个地方替换$(OutDir)

MSBuildArguments.Replace(&quot;$(OutDir)&quot;, [BinariesDirectory]))]MSBuildArguments.Replace(&quot;$(OutDir)&quot;, [outputDirectory]))]分别针对&{34; <mtbwa:MSBuild ...>&#34;下的Try to Compile the Project和&#34; For Each Configuration in BuildSettings.PlatformConfigurations&#34;

enter image description here