Azure DevOps构建ASP.NET Core 6项目报NETSDK1045错误如何解决
问题原因
这个NETSDK1045报错是Azure DevOps构建代理环境的SDK版本不匹配导致的:你本地安装了.NET 6不影响流水线环境,当前流水线默认调用了.NET 5 SDK,无法编译目标框架为net6.0的项目。你用的默认yml是Azure DevOps给传统.NET Framework的ASP.NET项目推荐的配置,本身不适配.NET Core项目。
解决方案
- 首先在流水线yml的steps最顶部添加UseDotNet任务,显式安装.NET 6 SDK,确保构建环境使用正确的SDK版本:
steps: # 新增的SDK安装任务放在所有步骤最前面 - task: UseDotNet@2 inputs: packageType: 'sdk' version: '6.x' installationPath: $(Agent.ToolsDirectory)/dotnet # 原有其他步骤放在后面
- 更稳妥的方式是替换原有针对传统ASP.NET的构建步骤,改用适配.NET Core的DotNetCoreCLI任务,替换后完整配置参考:
trigger: - master pool: vmImage: 'windows-latest' variables: solution: '**/*.sln' buildConfiguration: 'Release' steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '6.x' installationPath: $(Agent.ToolsDirectory)/dotnet - task: DotNetCoreCLI@2 inputs: command: 'restore' projects: '$(solution)' - task: DotNetCoreCLI@2 inputs: command: 'build' projects: '$(solution)' arguments: '--configuration $(buildConfiguration)' - task: DotNetCoreCLI@2 inputs: command: 'test' projects: '$(solution)' arguments: '--configuration $(buildConfiguration)' - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: true arguments: '--configuration $(buildConfiguration) --output $(build.artifactStagingDirectory)' zipAfterPublish: true - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop'
- 如果你要保留原有VSBuild任务,只需在VSBuild@1的inputs参数中新增指定VS版本的配置即可:
- task: VSBuild@1 inputs: solution: '$(solution)' vsVersion: '17.0' # 指定使用VS2022构建,对应版本号17.x msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)'
内容的提问来源于stack exchange,提问作者Richard77
相关产品推荐
相关产品推荐

