AzurePipeline 因以下原因而失败:未找到 .NETFramework 的参考程序集,版本 = v4.6.1

AzurePipeline failing due to: The reference assemblies for .NETFramework,Version=v4.6.1 were not found

我的构建有一个 Azure 管道设置。我最近 运行 遇到了这个问题,但想不出解决这个问题的方法:

##[error]C:\Program Files\Microsoft Visual Studio22\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1220,5): Error MSB3644: The reference assemblies for .NETFramework,Version=v4.6.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks

大约一周前,我们的很多构建都失败了,MS 改变了一些东西,我们得到了这样的东西:

[error]C:\Users\VssAdministrator\.nuget\packages\codegeneration.roslyn.buildtime[=11=].6.1\build\CodeGeneration.Roslyn.BuildTime.targets(73,5): Error CGR1001: CodeGeneration.Roslyn.Tool (dotnet-codegen) is not available, code generation won't run. Please check https://github.com/AArnott/CodeGeneration.Roslyn for usage instructions. 

但是能够通过显式添加任务以包含 netcore2.1 sdk 来解决此问题

    - task: UseDotNet@2
      inputs:
        packageType: 'sdk'
        version: '2.x'

现在这个问题已经解决了,我们现在遇到了抱怨找不到 .NET Framework 4.6.1 的错误。

无论如何,知道发生了什么,这让我很生气 - 非常感谢任何建议或见解。

From Agent pool - Change Agent Specification from Window-Latest to Window-2019 ,似乎 MS 在默认代理中做了一些更改

.Net 框架版本 4.6.1 已被 Azure DevOps Microsoft-hosted 代理弃用。 目前有两种 Microsoft-hosted 代理商:

windows-2019windows-latest:预装了 .Net 框架版本 4.7.24.8。这已记录在案 here

windows-2022:预装 .Net 框架版本 4.8。这已记录在案 here

即需要self-hosted agent才能在pipeline中使用.Net framework 4.6.1