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

.NET MAUI多目标框架下PackageVersion值不一致致NuGet还原失败

解决.NET MAUI项目多目标框架下PackageVersion冲突问题

核心原因

.NET MAUI项目默认会为不同目标框架(如Android、iOS、net8.0)处理版本继承逻辑,但手动添加额外目标框架后,版本属性的继承可能出现冲突——原项目的Version属性可能被部分目标框架的默认配置覆盖,导致PackageVersion同时获取到默认的1.0.0和你设置的自定义版本(如2.0),触发NuGet的版本一致性校验报错。

更合理的修复方案

1. 全局统一版本属性定义

在csproj文件的全局<PropertyGroup>(所有目标框架共享的属性组)中明确设置Version,让所有目标框架自动继承同一版本值,从根源避免冲突:

<PropertyGroup>
  <!-- 全局统一版本,PackageVersion会自动继承该值 -->
  <Version>2.0.0</Version>
  <!-- 若需AssemblyVersion/FileVersion与Version不同,再单独配置(可选) -->
  <!-- <AssemblyVersion>2.0.0.0</AssemblyVersion> -->
  <!-- <FileVersion>2.0.0.0</FileVersion> -->
</PropertyGroup>

2. 移除冲突的目标框架专属版本配置

检查csproj文件,删除所有针对单个目标框架的PackageVersion或Version设置,比如这类会引发冲突的代码:

<!-- 此类针对特定目标框架的版本配置需删除 -->
<PropertyGroup Condition="$(TargetFramework) == 'net8.0'">
  <PackageVersion>1.0.0</PackageVersion>
</PropertyGroup>

确保所有版本相关属性都定义在全局属性组内,而非特定目标框架的专属属性组中。

3. 清理NuGet缓存并重新还原

如果修改配置后仍报错,执行以下命令清理缓存并重新还原依赖:

dotnet nuget locals all --clear
dotnet restore

是否属于框架bug?

这并非框架bug,而是多目标框架配置时的版本属性继承逻辑冲突。.NET MAUI默认模板针对移动平台做了版本配置优化,手动添加桌面目标框架(如net8.0)后,需要确保全局版本属性的统一性,避免不同目标框架的默认配置覆盖自定义版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:18:16