以前用 Visual Studio 2019,打开新生命 NewLife.Core 源码没问题,现在升级到 VS2022 了,却遇到了编译报错:

Error MSB3644 The reference assemblies for .NETFramework,Version=v4.5 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 NewLife.Core C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinamd64Microsoft.Common.CurrentVersion.targets 1229

原来 VS2022 默认不再支持 .NET4.5 ,即使在 Visual Studio Installer 中也找不到 .NET4、.NET4.5、.NET4.5.1 的选项。

已经验证的解决方法就是手动下载 NuGet 包,解压缩并复制到“引用程序集”目录(Reference Assemblies),再重启 VS2022 即可。

适用于 .NET 4.0 的 NuGet 包:

https://www.nuget.org/packages/microsoft.netframework.referenceassemblies.net40

适用于 .NET 4.5 的 NuGet 包:

https://www.nuget.org/packages/microsoft.netframework.referenceassemblies.net45

一般情况下,引用程序集目录是:

C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFramework

以 .NET 4.5 为例:

  1. 在下载好包文件后,以压缩包形式打开 nupkg 文件。
  2. 将 build.NETFrameworkv4.5 路径下的文件复制到
    C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.5
  3. 重启 Visual Studio 即可正常编译。

安装后的目录应该是这个样子:

你也可以在以下网址中找到更多版本的开发者工具包:

https://www.nuget.org/packages?q=Microsoft.NETFramework.ReferenceAssemblies