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 build
或dotnet 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
答案 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 !!!)