添加NuGet打包引用后项目构建失败:未引用.NETFramework v4.7.2
解决VC++项目添加NuGet.Build.Tasks.Pack后目标框架检测失败问题
问题原因
NuGet.Build.Tasks.Pack包默认针对SDK风格的.NET项目设计,这类项目使用TargetFrameworks(复数)属性声明目标框架;而传统VC++项目(.vcxproj)使用的是TargetFrameworkVersion属性,两者不匹配导致NuGet在解析包资产时无法识别已配置的.NET Framework 4.7.2框架。
解决方案
- 补充
TargetFrameworks属性到项目文件
在已有的PropertyGroup Label="Globals"节点中,添加TargetFrameworks属性(使用框架简写格式net472对应.NET Framework 4.7.2),与原有的TargetFrameworkVersion共存:
<PropertyGroup Label="Globals"> ... <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <TargetFrameworks>net472</TargetFrameworks> ... </PropertyGroup>
- 清理并重新执行构建流程
执行以下命令彻底清理项目文件,再重新执行restore和后续操作:
git clean -xdf msbuild <solution> "/t:<project>" /t:restore /p:Configuration=Release msbuild <solution> "/t:<project>" /t:clean,build,pack /p:Configuration=Release
验证说明
添加TargetFrameworks属性后,NuGet就能正确识别项目的目标框架版本,不会再抛出"未引用.NETFramework,Version=v4.7.2"的错误。该修改不会影响原有VC++项目的编译逻辑,仅用于兼容NuGet打包工具的框架检测逻辑。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

