VSCode不断要求我恢复

时间:2018-02-14 20:29:45

标签: visual-studio-code .net-core windows-subsystem-for-linux

Windows 10上的VSCode 1.20.0,带有C#扩展名ms-vscode.csharp 1.14.0。 VSCode终端指向bash(适用于Linux的Windows子系统) VSCode在包含.NET CORE 2.0 C#项目的文件夹上打开

一切都很好,intellisense工作,项目参考被理解。

每当我将焦点切换到VS Code终端并输入“dotnet build”或“dotnet test”时,VSCode就会感到困惑。 Red Squigglies为每行源代码加下划线,intellisense停止工作,VSCode打开两个信息框说明

Info: There are unresolved dependencies from src\Project.csproj. Please execute the restore command to continue. Info: There are unresolved dependencies from test\Project.Tests.csproj. Please execute the restore command to continue.

当我单击信息框内的“恢复”按钮时,大约15秒后项目再次工作。但为什么,这种情况一直在发生,我倾向于经常使用dotnet构建。我可以不同地配置VS代码以避免此问题吗?构建代码会破坏编辑器功能似乎不对,所以我必须做错事。

修改

只有在WSL \ bash(无论是内部终端还是外部终端)中dotnet builddotnet test时,此问题似乎才会重现。当我在外部cmd.exe中构建或测试时,它似乎没有重现。

修改

cmd.exe dotnet --info

.NET命令行工具(2.1.4)

产品信息:  版本:2.1.4  提交SHA-1哈希:5e8add2190

运行时环境:  操作系统名称:Windows  操作系统版本:10.0.16299  操作系统平台:Windows  RID:win10-x64  基本路径:C:\ Program Files \ dotnet \ sdk \ 2.1.4 \

Microsoft .NET核心共享框架主机

版本:2.0.5   建立:17373eb129b3b05aa18ece963f8795d65ef8ea54

WSL\bash $ dotnet --info

.NET命令行工具(2.0.3)

产品信息:  版本:2.0.3  提交SHA-1哈希:eb1d5ee318

运行时环境:  操作系统名称:ubuntu  操作系统版本:16.04  OS平台:Linux  RID:ubuntu.16.04-x64  基本路径:/usr/share/dotnet/sdk/2.0.3 /

Microsoft .NET核心共享框架主机

版本:2.0.3   建立:a9190d4a75f4a982ae4b4fa8d1a24526566c69df

1 个答案:

答案 0 :(得分:2)

这可能发生的原因可能是因为VS Code正在使用在Windows上运行的Omnisharp - 当你使用Bash构建时,你正在为linux构建,因此在obj文件夹中的文件中生成的所有引用路径都将是linux路径,而不是Windows路径。

当Omnisharp在VS Code中查找智能感知的引用依赖项时,它无法找到它们,因此VS Code会要求您恢复项目。

您可以通过检查obj文件夹中的任何文件并查看路径来确认。

编辑 - 2019

只是对此的更新 - 事情看起来很有希望。我们很快就可以使用VS代码Remote Extension Pack在WSL环境(或Docker容器甚至是SSH会话)中运行扩展。这非常棒 - 它应该意味着我们的代码不仅在WSL中运行,而且扩展也将 - 因此OmniSharp扩展将在WSL中运行,使用Linux二进制文件进行智能感知等。

我个人对微软发布的新工具感到非常兴奋。使用WSL,VS Code,Docker和Hyper V等工具在Windows平台上进行开发是一个非常神的时刻......即将推出的WSL 2将会令人难以置信(完整的Linux Kernal融入Windows !!!)