Развертывание API .NET Core 3.0 в Azure Web App с использованием Release Pipeline - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь обновить мой API с .NET Core 2.2 до 3.0, но не могу заставить Azure Web App фактически запустить приложение с использованием 3.0.

Моя конфигурация конвейера сборки:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core 3'
  inputs:
    version: 3.x
- script: dotnet tool install --global dotnet-ef
- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'
- task: efcore-migration-script-generator-task@0
  inputs:
    projectpath: 'Models/Models.csproj'
    databasecontexts: 'DataContext'
    startupprojectpath: 'Api/Api.csproj'
    targetfolder: '$(build.artifactstagingdirectory)/migrations'
- script: dotnet publish --output $(Build.ArtifactStagingDirectory)
  displayName: 'dotnet publish $(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

У меня есть многоэтапный конвейер выпуска, который публикует артефакт в Azure с помощью задачи Azure App Service Deploy. Все работает без проблем

Я установил расширение предварительного просмотра, как указано здесь , и при запуске команды powershell Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.3.0.x86\ возвращает true. Я все еще вижу следующую ошибку, хотя.

ANCM не удалось найти собственные зависимости

Вернувшись в Powershell, запуск dotnet --version и dotnet --list-runtimes показывает, что он распознает только среды выполнения .NET Core 2, несмотря на 3.0время выполнения присутствует. Насколько я могу судить, установка расширения сайта не обновляет путь для использования новой версии dotnet, и у задачи развертывания Azure Devops, по-видимому, нет параметров для переопределения по умолчанию. Кому-нибудь удалось развернуть приложение .NET Core 3 через конвейеры выпуска Azure Devops?

1 Ответ

0 голосов
/ 01 октября 2019

Я не считаю это хорошим решением в любом случае, но обходной путь, который я сейчас использую, заключается в добавлении файла web.config, который передает полный путь к версии расширения сайта dotnet

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="D:\home\SiteExtensions\AspNetCoreRuntime.3.0.x86\dotnet" arguments=".\Api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
    </system.webServer>
  </location>
</configuration>

Я все еще ищу решение, которое не так подвержено ошибкам.

...