.NET 7.0添加多目标项目引用触发NU1702警告如何解决?
修复NU1702警告的方法
原因分析
你的多目标项目同时面向.NET 7.0和.NET 4.8,而被引用的Blazor WASM项目仅支持.NET 7.0。MSBuild在解析项目引用时,可能因为.NET Framework 4.8的存在,错误地尝试用.NET Framework规则解析Blazor项目,导致框架不匹配警告。
解决方案
1. 仅在.NET 7.0目标下引用Blazor WASM项目
由于Blazor WASM不支持.NET Framework 4.8,你的多目标项目的.NET 4.8版本本就不应引用该项目。修改项目文件,添加条件判断,让引用仅在构建.NET 7.0版本时生效:
<ProjectReference Include="..\some_project\some_project.csproj" Condition="'$(TargetFramework)' == 'net7.0'" />
这样.NET 4.8构建时会自动忽略这个引用,避免框架不匹配的问题。
2. 显式指定引用的目标框架
如果你的多目标项目的.NET 4.8版本确实需要引用该项目(需确保存在特殊适配逻辑),可以在引用中强制指定要解析的目标框架,确保.NET 7.0构建时匹配正确的版本:
<ProjectReference Include="..\some_project\some_project.csproj"> <SetTargetFramework>TargetFramework=net7.0</SetTargetFramework> <PrivateAssets>all</PrivateAssets> </ProjectReference>
<SetTargetFramework>会告诉MSBuild在解析该引用时,使用指定的.NET 7.0框架,避免错误匹配到.NET Framework 4.8。
3. 配置Blazor WASM项目的输出标识
在Blazor WASM项目的.csproj文件中,添加框架类型标识,帮助MSBuild正确识别其目标框架:
<PropertyGroup> <TargetFramework>net7.0</TargetFramework> <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier> <BlazorWebAssembly>true</BlazorWebAssembly> </PropertyGroup>
这能让多目标项目在解析引用时,更准确地匹配到对应的.NET 7.0输出。
内容的提问来源于stack exchange,提问作者Luis Abreu
相关产品推荐
相关产品推荐

