.NET 8解决方案构建失败:ResolveTargetingPackAssets任务抛出XmlException
.NET 8构建失败:ResolveTargetingPackAssets任务XmlException(0x00无效字符)
问题概述
Windows 11 + VS 2022社区版全新环境下,.NET 8解决方案所有项目目标框架为net8.0,构建时抛出以下错误:
"ResolveTargetingPackAssets"任务意外失败。
System.Xml.XmlException:十六进制值0x00(即空字符)是无效字符。第1行,第1位。
异常调用栈:System.Xml.XmlTextReaderImpl.Throw(Exception e)...Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()
已添加global.json强制使用.NET 8.0.404 SDK,目标文件路径已正确指向.NET 8目录,但执行清理重建、清空NuGet缓存、删除bin/obj、移除nuget.config等操作后问题仍存在。
解决方案
1. 检查.NET 8 Targeting Pack文件完整性
错误提示XML解析时遇到空字符,大概率是.NET 8 SDK的targeting pack中存在损坏的XML文件:
- 定位.NET 8 SDK对应的targeting pack目录,默认路径类似:
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.12(版本号需与8.0.404 SDK匹配,可通过dotnet --info查看Ref版本) - 使用PowerShell检测目录下是否存在开头为空字符的XML文件:
Get-ChildItem "C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.12" -Recurse -Filter *.xml | ForEach-Object { $content = Get-Content $_.FullName -Raw -ErrorAction SilentlyContinue if ($content -and $content[0] -eq [char]0x00) { Write-Host "损坏文件: $($_.FullName)" } } - 若发现损坏文件,卸载并重新安装.NET 8.0.404 SDK,确保安装过程无中断。
2. 确认global.json配置有效性
- 确保
global.json放置在解决方案根目录,内容严格指定SDK版本并禁用自动升级:{ "sdk": { "version": "8.0.404", "rollForward": "disable" } } - 打开命令行进入解决方案目录,执行
dotnet --version,确认输出为8.0.404;同时在VS的「工具→选项→项目和解决方案→.NET Core」中,确认8.0.404 SDK已被识别。
3. 清理MSBuild缓存
删除MSBuild的本地缓存文件,避免旧缓存干扰:
- 删除目录:
C:\Users\<你的用户名>\AppData\Local\Microsoft\MSBuild - 删除
C:\Users\<你的用户名>\AppData\Local\Temp下所有以MSBuild开头的临时文件夹
4. 检查项目文件框架引用
- 打开项目文件(
.csproj/.vbproj),确认TargetFramework节点为<TargetFramework>net8.0</TargetFramework>,无多余或错误的FrameworkReference配置 - 例如,控制台项目无需引用
Microsoft.AspNetCore.App,Web项目需确保该引用存在且版本匹配
5. 修复Visual Studio安装
- 打开Visual Studio Installer,选择已安装的VS 2022社区版,点击「修改」→「修复」,确保.NET相关组件安装完整
内容的提问来源于stack exchange,提问作者Ha'gel
相关产品推荐
相关产品推荐

