Связывание WebJob с веб-приложением в Visual Studio & Azure Pipeline - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь связать существующий проект WebJob (созданный с помощью шаблона Azure WebJob net461) с существующим веб-приложением, перейдя по ссылке https://docs.microsoft.com/en-us/azure/app-service/webjobs-dotnet-deploy-vs.

Однако

Проблема 1: Visual Studio показывает мне «Add-> Existing Project as Azure WebJob» в первый раз, затем, когда я нажимаю на это меню, выдается сообщение о том, что « команда не применима для выбранного проекта ». После этого оно никогда не отобразится в этом меню, если я не перезапущу VS.

Проблема 2: С другой стороны, мой независимый проект WebJob, даже после того, как был опубликован в Azure через VS вВ моем веб-приложении (по адресу wwwroot / app_data / jobs / непрерывно / WebJob) WeJob не запускается или распознается моим веб-приложением . Но когда я выполняю EXE в опубликованном месте, он выполняется успешно.

Проблема 3: Я следовал за ответом в Развертывание консольного веб-приложения для работы в службе приложений Azure, содержащей веб-интерфейс с использованием конвейеров Azure Devops ссылка, чтобы выпустить мой WebJob из конвейера Azure. Но это создает каталог Artifact в wwwroot / app_data / jobs / непрерывный / WebJob и , нажимая ZIP-файл вместо EXE. Так как мой проект находится в net461, мои задачи по сборке не являются dotnetcore. Итак, я не получаю точно такой же пользовательский интерфейс, как в ссылке.

Есть ли какая-либо последняя документация, доступная для этого?

YML-файл;

# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebJob.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'AzureWebJobArtifact'
    publishLocation: 'Container'

My развернуть задачу имеет;

Connection Type = Azure Resource Manager
App Service Type = Web App on Windows
Package or Folder = $(System.DefaultWorkingDirectory)/AzureWebJobArtifact
Deployment Method = ''

РЕДАКТИРОВАТЬ:

После изменения задач сборки и публикации артефактов в YML, как показано ниже, создается папка "AzureWebJobArtifact" в WEBJOB_ROOT_PATH (wwwroot / app_data/ jobs / непрерывный / WebJob) и развертывание только необходимых исполняемых файлов.

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:OutDir=$(System.DefaultWorkingDirectory) /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)\AzureWebJob\obj\Release\net461'
    ArtifactName: 'AzureWebJobArtifact'
    publishLocation: 'Container'

Я просто хочу, чтобы мой WebJob запускался / продолжался после публикации.

...