.Net 5 - Azure Pipeline - 找不到指定的 SDK 'Microsoft.NET.Sdk.BlazorWebAssembly'

.Net 5 - Azure Pipeline - The SDK 'Microsoft.NET.Sdk.BlazorWebAssembly' specified could not be found

我刚刚将 Blazor Web Assembly 解决方案升级到 .Net 5,但我在 Azure Pipeline 中的 NuGet 命令步骤中收到以下错误:

error MSB4236: The SDK 'Microsoft.NET.Sdk.BlazorWebAssembly' specified could not be found

azure-pipelines.yml 文件如下:

trigger:
- develop

pool:
  vmImage: 'windows-latest'

variables:
  solution: 'SomeProjectNew.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

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

- task: VSBuild@1
  inputs:
    solution: 'SomeProjectNew.sln'
    msbuildArgs: '/p:DeployOnBuild=true /p:PublishProfile=SomeProject-demo /p:Password=$(SomeProjectDemoWebDeployPassword)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

我是否遗漏了管道配置中的一些步骤以使其与 .Net 5 和新的 blazor sdk 一起工作?

由于您使用的是 .Net 5,因此请尝试将 Use .net core taskDotnet core task 与恢复命令一起使用,而不是使用 Nuget 命令。

- task: UseDotNet@2
  displayName: 'Use .NET Core sdk 5.0.100-rc.1.20452.10'
  inputs:
    packageType: 'sdk'
    version: '5.0.100'
    includePreviewVersions: true

- task: DotNetCoreCLI@2
  displayName: 'dotnet restore'
  inputs:
    command: restore
    projects: '**/*.csproj'

强烈建议针对 .net core 的项目使用 dotnet restoredotnet build 任务。见 this statement from Nuget task:

也可以在这里查看类似的问题:

以防万一其他人在寻找完整的 yml 文件,这是我最终得到的:

trigger:
- develop

pool:
  vmImage: 'windows-latest'

steps:

- task: UseDotNet@2
  displayName: 'Install .NET 5 SDK'
  inputs:
    packageType: 'sdk'
    version: '5.x'
    
- task: DotNetCoreCLI@2
  displayName: 'Restore Nuget Packages'
  inputs:
    command: 'restore'
    projects: 'SomeSolution.sln'
    feedsToUse: 'config'
    nugetConfigPath: '.nuget/NuGet.config'

- task: DotNetCoreCLI@2
  displayName: 'Publish to Azure'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: 'SomeProjectFolder/SomeWebProject.csproj'
    arguments: '/p:PublishProfile=profile-name /p:Password=$(WebDeployPassword)'
    zipAfterPublish: false
    modifyOutputPath: false

我的发布配置文件使用网络部署将应用部署到 Azure 应用服务。这种方法依赖于源代码控制中的“.nuget/NuGet.config”文件,以及在管道 (Secret Variables).

上定义的秘密变量 $(WebDeployPassword)