MSB3644:找不到框架“FrameworkVersion”的引用程序集

当找不到项目所请求 .NET 版本的 .NET 引用程序集时,会发生此错误。 检查项目是否引用了 Microsoft.NETFramework.ReferenceAssemblies NuGet 包。 请参阅 .NET Framework 目标包 Nuget 包。 或者,项目文件可能存在问题,因为无法识别或未安装其所请求的版本。 或者,可能存在安装问题,即该 .NET 版本的引用程序集文件夹不存在或已损坏。

项目文件框架标识符和版本

检查项目文件的 TargetFrameworkTargetFrameworksTargetFrameworkIdentifierTargetFrameworkVersion 属性中是否没有拼写或输入错误。 例如,项目文件中的以下代码生成 MSB3644

    <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == ''">
        <TargetFrameworkIdentifier>.NETCORAPP</TargetFrameworkIdentifier>
        <TargetFrameworkVersion>3.1</TargetFrameworkVersion>
    </PropertyGroup>

该问题表明 TargetFrameworkIdentifier 拼写错误。 应是 .NETCOREAPP,而不是 .NETCORAPP(注意缺少“e”)。

在利用 TargetFrameworks 属性和多个目标框架时,请确保它们之间用正确的分隔符 ; 分隔。 例如,尝试使用 , 分隔符分隔框架时,将发生 MSB3644。 以下是正确的语法示例:

    <PropertyGroup>
            <TargetFrameworks>net6.0;net5.0;netcoreapp3.1</TargetFrameworks>
    </PropertyGroup>

引用程序集文件夹

接下来,记下 TargetFrameworkTargetFrameworkIdentifierTargetFrameworkVersion 中请求的框架标识符和版本,并在本地驱动器上查找该版本的引用程序集文件夹。 例如,在 Windows 上,.NET Core 的 32 位引用程序集应位于 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore 下,而其 64 位 .NET Framework 引用程序集文件夹应位于 C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework 下。 如果项目所需版本的文件夹不存在或已损坏,则可能需要安装或重新安装该版本。 你可以通过下载 .NET 安装所需的版本。

另请参阅