如何修复AZ流水线搭配带.NET 5 AZ Function后端的静态Web App时的SDK错误
问题原因
Azure Static Web Apps 内置的 AzureStaticWebApp@0 部署任务使用独立的 Oryx 构建环境,不会继承流水线前置步骤安装的.NET SDK 版本,因此你提前安装的 3.1.x 版本 SDK 不会被构建环节识别,导致版本匹配报错。
解决方案
方案1:指定部署任务运行时版本
直接在 AzureStaticWebApp@0 任务的入参中新增运行时版本声明即可,修改后的完整流水线配置如下:
trigger: - master pool: vmImage: ubuntu-latest steps: - checkout: self submodules: true - task: UseDotNet@2 displayName: 'Use .NET Core 3.1 sdk' inputs: packageType: sdk version: '3.1.x' - task: AzureStaticWebApp@0 inputs: app_location: '/Client' output_location: '/wwwroot' api_location: '/API' azure_static_web_apps_api_token: $(deployment_token) runtime_version: '3.1'
方案2:自定义构建跳过自动编译
如果方案1未生效,可以拆分构建、部署流程,提前完成 Blazor 应用和 Azure Function 的编译打包,再让部署任务直接使用已构建好的产物,配置示例如下:
trigger: - master pool: vmImage: ubuntu-latest steps: - checkout: self submodules: true - task: UseDotNet@2 displayName: 'Use .NET Core 3.1 sdk' inputs: packageType: sdk version: '3.1.x' # 构建发布 Blazor WASM 客户端 - task: DotNetCoreCLI@2 displayName: 'Build Blazor Client' inputs: command: 'publish' publishWebProjects: false projects: '**/Client/*.csproj' arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)/client' zipAfterPublish: false # 构建发布 Azure Function 后端 - task: DotNetCoreCLI@2 displayName: 'Build Function API' inputs: command: 'publish' publishWebProjects: false projects: '**/API/*.csproj' arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)/api' zipAfterPublish: false - task: AzureStaticWebApp@0 inputs: app_location: '$(Build.ArtifactStagingDirectory)/client/wwwroot' api_location: '$(Build.ArtifactStagingDirectory)/api' output_location: '' skip_app_build: true skip_api_build: true azure_static_web_apps_api_token: $(deployment_token)
内容的提问来源于stack exchange,提问作者Kurt Frank
相关产品推荐
相关产品推荐

