.NET 8升级后MAUI项目出现GlobalUsings.g.cs找不到错误
MAUI升级.NET 8后CS2001文件找不到问题的解决方法
问题描述
升级MAUI项目到.NET 8后,构建时出现以下错误:
Error CS2001
源文件'C:\Users\myuser\Documents\Solution\project\obj\Debug\net8.0-windows10.0.19041.0\win10-x64\project.GlobalUsings.g.cs'无法找到。
但该路径下project.GlobalUsings.g.cs文件实际存在,且已尝试清理项目、手动删除bin/obj目录重建等操作,修改了项目文件中的Windows目标框架版本,问题仍未解决。
解决方案
1. 修正项目SDK引用
MAUI项目必须使用专门的MAUI SDK,当前项目文件开头的普通.NET SDK无法正确处理MAUI的自动生成文件逻辑。将项目开头的:
<Project Sdk="Microsoft.NET.Sdk">
替换为:
<Project Sdk="Microsoft.NET.Sdk.Maui">
2. 移除干扰构建的PreBuild目标
项目中自定义的PreBuild目标会在构建前强制删除bin和obj目录,破坏MSBuild的构建流程,导致已生成的临时文件被提前删除。删除以下代码块:
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"> <Exec Command="rmdir /s /q "$(ProjectDir)bin"
rmdir /s /q "$(ProjectDir)obj"" /> </Target>
3. 完善TargetFrameworks配置
确保主PropertyGroup中包含基础的.NET 8跨平台目标框架,再通过条件添加Windows目标,避免框架配置不完整:
<PropertyGroup> <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks> <!-- 其他原有配置保持不变 --> </PropertyGroup>
4. 升级/替换不兼容NuGet包
项目中部分包版本与.NET 8不兼容,需调整:
- Microsoft.AspNetCore.Identity 2.2.0:该版本为.NET Core 2.2时期的包,与.NET 8严重不兼容,建议移除或替换为适配.NET 8的身份验证方案。
- UraniumUI相关包:当前2.2.5版本适配性不足,建议升级至支持.NET 8的3.x系列版本。
- Microsoft.CodeAnalysis.CSharp 4.6.0:可升级至与.NET 8匹配的4.8.x及以上版本。
5. 彻底清理后重新构建
完成以上修改后:
- 关闭Visual Studio
- 手动删除解决方案根目录下的
.vs文件夹、项目的bin和obj目录 - 重新打开解决方案,依次执行清理解决方案 -> 重建解决方案
内容的提问来源于stack exchange,提问作者cheekyp123
相关产品推荐
相关产品推荐

