MSB3644:找不到框架“FrameworkVersion”的引用程序集
当找不到项目所请求 .NET 版本的 .NET 引用程序集时,会发生此错误。 检查项目是否引用了 Microsoft.NETFramework.ReferenceAssemblies NuGet 包。 请参阅 .NET Framework 目标包 Nuget 包。 或者,项目文件可能存在问题,因为无法识别或未安装其所请求的版本。 或者,可能存在安装问题,即该 .NET 版本的引用程序集文件夹不存在或已损坏。
项目文件框架标识符和版本
检查项目文件的 TargetFramework
、TargetFrameworks
、TargetFrameworkIdentifier
或 TargetFrameworkVersion
属性中是否没有拼写或输入错误。 例如,项目文件中的以下代码生成 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>
引用程序集文件夹
接下来,记下 TargetFramework
、TargetFrameworkIdentifier
和 TargetFrameworkVersion
中请求的框架标识符和版本,并在本地驱动器上查找该版本的引用程序集文件夹。 例如,在 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 安装所需的版本。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈