使用 Release Pipeline 将 .NET Core 3.0 API 部署到 Azure Web App
Deploying .NET Core 3.0 API to Azure Web App using Release Pipeline
我正在尝试将我的 API 从 .NET Core 2.2 升级到 3.0,但我无法让 Azure Web 应用程序真正 运行 使用 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 App Service Deploy
任务将项目发布到 Azure。一切 运行 都没有问题
我已经按照指示安装了预览扩展 here,并且 运行 使用了 powershell 命令 Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.3.0.x86\
returns true
。我仍然看到以下错误。
ANCM Failed to Find Native Dependencies
回到 Powershell,运行ning dotnet --version
和 dotnet --list-runtimes
显示它只识别 .NET Core 2 运行 次,尽管 3.0 运行暂时在场。据我所知,安装站点扩展不会更新使用新 dotnet
版本的路径,而且 Azure Devops 部署任务似乎没有任何选项来覆盖默认值。有没有人设法通过 Azure Devops Release Pipelines 部署 .NET Core 3 应用程序?
无论如何我都不认为这是一个好的解决方案,但我现在正在使用的解决方法是添加一个 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>
我仍在寻找不太容易出错的解决方案。
我正在尝试将我的 API 从 .NET Core 2.2 升级到 3.0,但我无法让 Azure Web 应用程序真正 运行 使用 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 App Service Deploy
任务将项目发布到 Azure。一切 运行 都没有问题
我已经按照指示安装了预览扩展 here,并且 运行 使用了 powershell 命令 Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.3.0.x86\
returns true
。我仍然看到以下错误。
ANCM Failed to Find Native Dependencies
回到 Powershell,运行ning dotnet --version
和 dotnet --list-runtimes
显示它只识别 .NET Core 2 运行 次,尽管 3.0 运行暂时在场。据我所知,安装站点扩展不会更新使用新 dotnet
版本的路径,而且 Azure Devops 部署任务似乎没有任何选项来覆盖默认值。有没有人设法通过 Azure Devops Release Pipelines 部署 .NET Core 3 应用程序?
无论如何我都不认为这是一个好的解决方案,但我现在正在使用的解决方法是添加一个 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>
我仍在寻找不太容易出错的解决方案。