You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多目标框架的.NET MAUI App引用到.NET MAUI类库?

解决.NET MAUI跨项目引用的NU1201错误

核心原因

你遇到的NU1201错误,本质是主MAUI应用的多平台目标框架(net6.0-android31.0等)与组件类库的通用net6.0目标框架不兼容,NuGet无法在不同目标框架集合之间建立引用关系。

可行解决方案

1. 让组件类库与主应用目标框架对齐

直接修改组件类库的.csproj文件,将其改为和主应用一致的多平台目标框架,同时启用MAUI类库支持:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net6.0-android31.0;net6.0-ios15.4;net6.0-maccatalyst15.4;net6.0-windows10.0.19041</TargetFrameworks>
    <UseMaui>true</UseMaui>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
</Project>

这样组件类库和主应用的目标框架完全匹配,就能正常引用主应用项目,不会再触发兼容性错误。

2. 给主应用添加条件化项目引用(不推荐)

如果坚持让组件类库保持单net6.0目标,可以尝试在主应用的.csproj中为每个平台目标添加条件化引用:

<ItemGroup>
  <ProjectReference Include="..\YourComponentLibrary\YourComponentLibrary.csproj" 
                    Condition="'$(TargetFramework)' == 'net6.0-android31.0' Or 
                               '$(TargetFramework)' == 'net6.0-ios15.4' Or 
                               '$(TargetFramework)' == 'net6.0-maccatalyst15.4' Or 
                               '$(TargetFramework)' == 'net6.0-windows10.0.19041'" />
</ItemGroup>

但这种方式可能引发编译阶段的依赖问题,且后续平台版本更新时需要同步修改条件,维护成本较高。

3. 抽离通用实用类到共享类库(长远最优)

虽然你想避免新增项目,但如果主应用中的实用类是跨平台通用逻辑,将其抽离到一个net6.0或.NET Standard 2.0类库中,让主应用和组件类库同时引用这个共享类库,是更合理的架构设计:

  • 彻底规避目标框架不兼容问题
  • 避免主应用与组件类库之间的循环引用风险
  • 通用逻辑的复用性和可维护性更强

内容的提问来源于stack exchange,提问作者jaydopartu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:50:37