16

我认为这将是一项非常简单的任务,并且那里有相当多的文档,但是我对其中任何一个的运气都为零,并且假设它几乎都已过时。

我有 .NET Core MVC 6 Web 应用程序,我已经开发了一段时间,需要在 Azure 上为它设置一个 WebJob。我想使用 Azure 提供的应用程序已经在使用的持续部署系统将它与应用程序一起部署。根据 Kudu 文档,有可能:

https://github.com/projectkudu/kudu/wiki/Web-Jobs#deploying-net-console-webjobs-alongside-an-aspnet-application

其中指出:

这在直接从 Visual Studio (WebDeploy) 部署或通过 git 部署时都有效。

它引用了这个链接(https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-deploy-webjobs/),我一直在尝试没有成功。

我有最新版本的 Visual Studio 2015、.NET Core 1.0.0 & Tools 和 Azure SDK。

显而易见的第一件事是,我没有 Azure 文档的屏幕截图中显示的脚手架选项,并且在未能找到任何缺失的依赖项后,我求助于尝试按照描述手动设置它。

即使将所需文件放在指定的位置 (webjobs-list.jsonwebjob-publish-settings.json) 并为我的项目配置它们,并添加Microsoft.Web.WebJobs.Publish到 WebJob 项目中,Kudu 也无法通过持续部署系统找到 WebJob。

我已经根据我在那里找到的文档尝试了几种方法和变体,但我就是无法让它工作,而且所有其他 SO 问题都已经存在一年了。

有谁知道我做错了什么?使用最新版本的 .NET Core MVC 是否仍然可以做到这一点?

4

1 回答 1

9

WebJobs 文件存储在“App_Data/jobs/continuous”或“App_Data/jobs/triggered”文件夹下,因此我可以用来部署 Web App 和 WebJob 的一种方法是在构建期间手动将所有 WebJobs 文件复制到这些文件夹中时间。我认为这将适合 VS 工具正在更新。

我的解决方案与您的解决方案略有不同,因为我使用 Visual Studio Team Services 构建我的应用程序并将其发布到 Azure,但概念是相同的。您可以在 Visual Studio 中使用构建后事件来运行将这些文件复制到作业文件夹的脚本。

以下是我在 VSTS 构建定义中配置的步骤:

  1. 命令行任务: 工具: dotnet 参数: restore

  2. Visual Studio 构建任务: 解决方案: **\MyApp.sln 平台: $(BuildPlatform) 配置: $(BuildConfiguration) Visual Studio 版本: Visual Studio 2015

  3. 命令行任务: 工具: dotnet 参数: publish -c $(BuildConfiguration)

  4. 命令行任务: 工具: dotnet 参数: publish -c $(BuildConfiguration) $(Build.SourcesDirectory)\src\MyApp.Jobs\project.json

  5. 复制文件任务(这是诀窍): 源文件夹: src/MyApp.Jobs/bin/$(BuildConfiguration)/netcoreapp1.0/publish/ 内容: ** 目标文件夹: src/MyApp.Web/bin/$(BuildConfiguration )/netcoreapp1.0/publish/App_Data/jobs/triggered/MyJobName/

  6. 存档文件任务: 要存档的根文件夹(或文件): src/MyApp.Web/bin/$(BuildConfiguration)/netcoreapp1.0/publish/ 存档路径的前缀根文件夹名称:未选中 存档类型: zip 要创建的存档文件: website.zip 替换现有存档:选中

  7. 复制文件任务:源文件夹: 内容: **/*.zip 目标文件夹: $(Build.ArtifactStagingDirectory)

  8. 发布构建工件任务: 路径做发布: $(Build.ArtifactStagingDirectory) 工件名称: drop 工件类型:服务器

于 2016-10-14T18:08:18.920 回答