.NET Android SDK版本设置异常:TargetSDK莫名变为28的解决办法
解决.NET Android TargetSDK版本被强制设为28的异常问题
排查步骤与解决方案
1. 检查多环境Manifest文件
- 确认项目中是否存在环境专属的AndroidManifest.xml(比如
Properties/AndroidManifest.xml之外,还有Properties/AndroidManifest.Release.xml或AndroidManifest.Debug.xml),这类文件会在对应构建配置下覆盖主Manifest的设置。 - 打开所有Manifest文件,搜索
android:targetSdkVersion,排查是否有地方默认设置为28。
2. 彻底清理项目缓存
旧构建缓存常残留无效配置,按以下操作清理:
- 关闭当前IDE(Visual Studio等)
- 删除项目根目录下的
bin和obj文件夹 - 执行命令行清理:
dotnet clean - 重新打开项目并完整重建
3. 检查csproj的条件性配置
打开项目的.csproj文件,查看是否存在针对Release构建的单独配置块,比如:
<PropertyGroup Condition="'$(Configuration)'=='Release'"> <!-- 这里可能隐藏了覆盖版本的配置 --> <AndroidTargetSdkVersion>28</AndroidTargetSdkVersion> </PropertyGroup>
如果存在,将版本修改为34或直接删除该配置块。
4. 查看Manifest合并日志
.NET Android会合并主项目、第三方Nu包等所有来源的Manifest,可通过日志定位问题来源:
- 在Visual Studio中,打开工具 > 选项 > 项目和解决方案 > 构建并运行,将MSBuild构建日志详细级别设为详细
- 重新构建项目,在输出窗口搜索
targetSdkVersion,查看合并过程中哪个Manifest文件引入了28的配置 - 如果是第三方Nu包导致,优先升级该Nu包;若无法升级,可在主Manifest中强制覆盖:
先引入tools命名空间,再在uses-sdk标签添加强制覆盖属性:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="34" tools:overrideLibrary="com.example.thirdpartylib"/> </manifest>
5. 强制指定TargetSDK版本
在.csproj中添加以下配置,强制让MSBuild忽略Manifest冲突,使用指定版本:
<PropertyGroup> <AndroidTargetSdkVersion>34</AndroidTargetSdkVersion> <AndroidManifestMerger>ManifestMerger</AndroidManifestMerger> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Movsar Bekaev
相关产品推荐
相关产品推荐

