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

WebJobs publishing to Azure doesn't create App_Data directory structure

我正在尝试使用本地 TFS 2013 为 Azure Web 作业设置 CI。生成服务器本身已完全修补并安装了 Build Tools 2017。我已经在一个解决方案中尝试了一个独立的 Web 作业项目,也尝试了一个具有 Web 项目和 Web 作业项目的解决方案。从 VS2017 开始,发布(在 Web 项目和 Web Jobs 项目的情况下)和发布为 WebJobs(在独立的 Web Jobs 项目的情况下)工作正常,一切都已部署。包含 NuGet 包 Microsoft.Web.WebJobs.Publish。在这两种情况下,本地 build/publish 正确发布网站以及 app_data/... 文件夹中的作业,但 TFS 构建甚至不创建 app_data 文件夹。似乎要发布的最终文件集合正在尝试从甚至未在 TFS 构建中创建的 WebJobs/bin/** 文件夹中选取文件。 TFS 构建添加了额外的参数 /p:OutDir="C:\Builds\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 构建版本与博客 [​​=34=] 中的略有不同,并且没有什么可以覆盖 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 使用的是最新版本。

原来我们的模板中没有设置 OutputPath 属性。没有"Output Location"设置为"As Configured"。我最终传递了 MSBuild 参数并修改了模板以在两个地方 $(OutDir) 进行替换

MSBuildArguments.Replace("$(OutDir)", [BinariesDirectory]))]MSBuildArguments.Replace("$(OutDir)", [outputDirectory]))] 分别对应“Try to Compile the Project”和“For Each Configuration in BuildSettings.PlatformConfigurations

下的 <mtbwa:MSBuild ...>