从Xamarin.Forms升级到.NET MAUI后出现兼容性问题
.NET MAUI升级后UWP项目NU1202兼容性问题的解决方法
问题说明
原支持Android和UWP的Xamarin.Forms解决方案,经微软升级助手迁移到.NET 8.0与.NET MAUI后,UWP项目触发NU1202错误:System.Security.Principal.Windows 5.0.0包无法与net8.0-windows10.0.19041目标框架兼容,该包仅支持uap10.0.16299。
德语错误原文:
Fehler NU1202 Das Paket System.Security.Principal.Windows 5.0.0 ist nicht mit net8.0-windows10.0.19041 (.NETCoreApp,Version=v8.0)/win10-x64 kompatibel. Paket System.Security.Principal.Windows 5.0.0 unterstützt Folgendes: uap10.0.16299 (UAP,Version=v10.0.16299)
解决步骤
1. 处理包引用兼容性
- 若项目直接引用了
System.Security.Principal.Windows,将版本升级到8.0.x(兼容.NET 8的稳定版)。 - 若为间接引用(例如来自
Microsoft.Windows.Compatibility),先更新Microsoft.Windows.Compatibility到最新稳定版;若问题仍存在,直接添加兼容版本的包引用:
<PackageReference Include="System.Security.Principal.Windows" Version="8.0.0" />
2. 对齐目标框架与最低版本
项目当前TargetPlatformMinVersion为10.0.16299.0,TargetFrameworks为net8.0-windows10.0.19041.0,版本不匹配可能引发兼容问题。可选择:
- 将
TargetPlatformMinVersion升级到10.0.19041.0,与目标框架版本一致:
<TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
- 或调整
TargetFrameworks为匹配最低版本的框架(如net8.0-windows10.0.16299.0)
3. 清理重建项目
完成配置修改后,执行以下操作确保生效:
- 删除项目根目录下的
bin和obj文件夹 - 在Visual Studio中依次执行「清理解决方案」→「还原NuGet包」→「生成解决方案」
4. 移除过时编译常量
项目中保留的NETFX_CORE、WINDOWS_UWP是旧Xamarin.UWP的编译常量,在.NET MAUI Windows项目中已无用,建议移除以避免潜在冲突:
<!-- 修改前 --> <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants> <!-- 修改后 --> <DefineConstants>DEBUG;TRACE</DefineConstants>
内容的提问来源于stack exchange,提问作者Bernd Morgeneyer
相关产品推荐
相关产品推荐

