You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VSCode 1.20.0执行dotnet命令后报错、智能提示失效且反复要求Restore求助

解决VSCode切换WSL终端执行dotnet命令后智能提示失效的问题

这个坑我之前踩过!核心原因是Windows下的VSCode C#扩展和WSL里的dotnet工具对项目文件路径的处理逻辑不一致,执行dotnet build/dotnet test后,扩展找不到正确的依赖信息直接罢工了。试试下面几个实用的解决办法:

1. 避免命令自动修改项目文件路径

执行WSL终端里的dotnet命令时,加上--no-restore参数,比如:

dotnet build --no-restore
dotnet test --no-restore

这样可以阻止命令自动触发restore操作,避免生成Linux风格的路径写入项目文件,Windows下的VSCode就能保持对项目依赖的正确识别了。

如果已经执行过命令导致路径混乱,可以手动打开.csproj文件,检查<HintPath>等节点的路径,把Linux风格的/改成Windows的\;或者在WSL里执行一次dotnet restore后,回到VSCode按Ctrl+Shift+P选择Reload Window重新加载项目。

2. 让C#扩展直接使用WSL的dotnet环境

统一两边的环境是根治问题的办法:

  1. 打开VSCode设置(快捷键Ctrl+,),搜索并添加以下配置:
"omnisharp.useWsl": true,
"omnisharp.path": "latest"
  1. 重启VSCode,此时C#扩展会自动连接到WSL中的dotnet环境,不管你在终端执行什么命令,两边的路径处理逻辑一致,就不会再出现红波浪线和无限要求Restore的情况了。

3. 清除Omnisharp缓存重启服务

有时候缓存会搞出奇怪的问题:

  • Ctrl+Shift+P打开命令面板,输入OmniSharp: Restart OmniSharp,先尝试重启服务;
  • 如果没用,找到Windows下的Omnisharp缓存目录(一般是%USERPROFILE%\.omnisharp\cache),删除里面的所有内容,再重启VSCode重新加载项目。

4. 检查版本兼容性(可选)

你当前用的VSCode 1.20.0和C#扩展1.14.0都比较老旧,虽然.NET Core 2.0本身已停止支持,但如果条件允许,尝试升级VSCode到兼容的较新版本(注意不要太新导致不支持.NET Core 2.0),或者匹配对应版本的C#扩展,也能减少这类兼容性问题。

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

火山引擎 最新活动