我有一个使用 Azure DevOps Pipelines 构建和部署的 ASP.NET Core 3.x 项目。在升级项目以使用 C# 9.0(而不是ASP.NET Core 5.0)后,我的dotnet build
( DotNetCoreCLI@2
) 任务警告:
未知的 C# 语言版本 9.0。
错误
警告后,任务立即失败并出现以下错误:
##[错误]C:\Program Files\dotnet\sdk\3.1.404\Sdks\Microsoft.NET.Sdk.Razor\build\netstandard2.0\Microsoft.NET.Sdk.Razor.CodeGeneration.targets(150,5 ):错误:rzc 生成退出,代码为 2。
任务
我的构建任务没有什么特别之处,但为了完整性:
- task: DotNetCoreCLI@2
displayName: 'dotnet build'
inputs:
projects: '*.sln'
arguments: '/p:configuration=$(BuildConfiguration) --no-restore'
条件
值得注意的是:
dotnet build
该项目可以在我的本地机器上正常使用。- 如果我删除 ASP.NET Core 3.x 项目,只留下我的 .NET Core 3.x 类库,一切都会正常构建。
- 如果我用
DotNetCoreCLI@2
任务替换VSBuild@1
任务,一切也都很好。
鉴于此,仅当项目满足以下所有条件时才会出现此问题:
- 该项目使用SDK
Microsoft.NET.Sdk.Web
或Microsoft.NET.Sdk.Razor
SDK。 - 该项目使用一个
TargetFramework
或。netcoreapp3.0
netcoreapp3.1
- 该项目使用
LangVersion
.9.0
- 该项目是使用 Azure DevOps
DotNetCoreCLI@2
任务构建的。
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<LangVersion>9.0</LangVersion>
</PropertyGroup>
</Project>
关于如何解决这个问题的任何想法?