求助:NuGet配置中不存在的回退文件夹未被忽略引发MSB4018错误
差异原因推测
.NET/NuGet版本不同
两台机器的.NET SDK、NuGet工具版本存在差异。新版本NuGet对混合斜杠路径的兼容性更强,能自动忽略不存在的回退文件夹;而笔记本上的旧版本对路径格式校验更严格,混合斜杠导致解析失败,且不会跳过无效路径,直接触发MSB4018错误。配置加载与权限差异
笔记本可能以标准用户身份运行,NuGet加载配置时的权限限制导致无法跳过无效路径;台式机用管理员权限运行,容错性更高。另外,台式机的本地NuGet配置中可能存在优先级更高的有效回退文件夹,覆盖了Godot生成的无效路径,而笔记本没有这个覆盖逻辑。系统路径解析行为差异
不同Windows系统的区域设置或文件系统驱动,对混合斜杠路径的解析逻辑不同。台式机系统能自动转换混合斜杠为有效格式,笔记本则无法识别,导致路径被判定为无效且无法忽略。
解决方案
修正配置文件路径格式
找到%APPDATA%/NuGet/config/Godot.Offline.Config,将混合斜杠的路径统一为单一种类(全用\或/),或者注释掉回退文件夹配置:<!-- 原路径 --> <!-- <fallbackFolder>E:/Godot/Godot_v4.0.1-stable_mono_win64/editor_data/mono\GodotNuGetFallbackFolder</fallbackFolder> --> <!-- 修正后 --> <fallbackFolder>E:\Godot\Godot_v4.0.1-stable_mono_win64\editor_data\mono\GodotNuGetFallbackFolder</fallbackFolder>统一格式后,即使U盘未连接,NuGet能正确解析路径并忽略不存在的文件夹。
禁用Godot的离线配置
在%USERPROFILE%/.nuget/NuGet/NuGet.Config中添加配置,排除Godot生成的离线配置:<config> <add key="disableConfig" value="%APPDATA%/NuGet/config/Godot.Offline.Config" /> </config>或者删除
Godot.Offline.Config后创建同名空文件并设为只读,阻止Godot重新生成无效配置。调整Godot的NuGet设置
打开Godot编辑器,进入项目设置 > .NET > NuGet,关闭“离线模式”,或手动指定本地存在的NuGet回退文件夹,避免生成指向U盘的无效配置。
内容的提问来源于stack exchange,提问作者ThatGuy

