多目标项目中net45加载失败(MSB3644错误)的解决方法
问题
从GitHub克隆KGySoft.Drawing仓库后,构建多目标项目时遭遇.NET 4.5加载失败。已尝试多种方式安装.NET 4.5,且能创建其他框架版本的项目,但net45仍无法正常加载。
项目配置如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net35;net40;net45;net46;netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp3.0;net5.0;net6.0</TargetFrameworks> </PropertyGroup> </Project>
错误提示:
error MSB3644: 未找到.NETFramework,Version=v4.5的引用程序集。 请安装该框架版本的开发包(SDK/目标包),或重新定向你的应用程序。
解决方法
确认.NET 4.5目标包安装状态
打开Visual Studio安装器,进入“修改”界面,在“单个组件”中搜索“.NET Framework 4.5 目标包”,确保已勾选并完成安装。若之前手动安装过相关包,建议先卸载再通过VS安装器重新安装,避免版本冲突。检查引用程序集目录完整性
查看系统路径C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5是否存在,且包含完整的文件。若目录缺失或文件不全,重新下载对应目标包并解压至该路径。强制指定目标框架引用路径
在项目根目录创建或修改Directory.Build.props文件,添加以下配置,明确指定.NET 4.5的引用路径:<Project> <PropertyGroup> <FrameworkPathOverride>$(ProgramFiles)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5</FrameworkPathOverride> </PropertyGroup> </Project>临时跳过.NET 4.5构建
若暂时不需要net45版本,可修改项目文件的TargetFrameworks节点,移除net45后先构建其他版本:<TargetFrameworks>net35;net40;net46;netstandard2.0;netstandard2.1;netcoreapp2.0;netcoreapp3.0;net5.0;net6.0</TargetFrameworks>清理缓存后重建项目
删除项目下的bin和obj目录,执行dotnet nuget locals all --clear命令清理NuGet缓存,然后重新运行构建命令。
内容的提问来源于stack exchange,提问作者Paulo Santos
相关产品推荐
相关产品推荐

