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

如何查找并修复.NET解决方案文件中的重复项目条目?

解决OmniSharp加载解决方案时重复键异常的方法

1. 排查解决方案文件中的重复项目GUID

错误根源是字典插入重复键,OmniSharp此处的键为项目GUID而非项目路径,单纯按行排序去重无法解决问题:

  • 打开.sln文件,定位所有Project(开头的行,格式示例:
    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectName", "ProjectPath.csproj", "{GUID}"
    
  • 提取每个项目的GUID(最后一组大括号内的内容),找出重复的GUID条目,保留对应正确项目路径的条目,删除多余项。

2. 清理OmniSharp缓存

缓存残留的旧项目信息可能引发冲突:

  • 找到缓存目录:
    • Windows系统:%USERPROFILE%\.omnisharp\cache
    • Linux/macOS系统:~/.omnisharp/cache
  • 删除对应解决方案的缓存文件夹,重启Neovim后重新加载OmniSharp。

3. 用Visual Studio修复解决方案

VS自带工具可自动修复解决方案文件的结构问题:

  • 打开目标.sln文件,依次点击工具→NuGet包管理器→管理解决方案的NuGet程序包,点击还原按钮
  • 执行生成→清理解决方案,再运行生成解决方案
  • 关闭VS后返回Neovim,重新加载OmniSharp。

4. 重新生成干净的解决方案文件(极端情况)

若上述方法无效,可重建解决方案:

  • 备份原.sln文件
  • 在解决方案目录打开终端,运行dotnet new sln创建空解决方案
  • 逐个添加项目:dotnet sln add ./Path/To/Your/Project.csproj(确保每个项目仅添加一次)

5. 匹配OmniSharp与MSBuild版本

确保OmniSharp使用的MSBuild版本与VS2022一致:

  • 查看Neovim中OmniSharp日志开头的MSBuild版本信息
  • 若版本不匹配,在OmniSharp配置中手动指定MSBuild路径,示例:
    cmd = {"omnisharp", "--msbuild-path", "C:/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/MSBuild.exe"}
    
    路径需根据你的VS安装版本调整。

内容的提问来源于stack exchange,提问作者De Scar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:43:16