vscode omnisharp 不适用于解决方案但适用于项目

vscode omnisharp not working for solution but works for project

我的文件夹结构如下:project/csproj A,project/csproj B 如果我在 vs 代码项目目录中打开,omnisharp 仅适用于 csproj B。如果我在vs code中打开project/csproj一个目录,omnisharp为这个项目工作。

如何解决这个问题,以便我可以打开项目目录并对两个项目都使用 omnisharp?

如果重要的话,损坏的项目是 nunit 类型。我尝试重新加载 vscode、disabling/enabling omnisharp。 我在

的空目录中创建了项目
dotnet new nunit -n=projectB

一个解决方案由一个sln文件指定,如果您还没有一个,只需在solution-level文件夹中新建一个

dotnet new sln

然后,您必须将项目引用添加到解决方案

dotnet sln path/to/solution add path/to/project

如果 omnisharp 没有更新它,请重新启动它或使用 vs 代码。

Omnisharp 只能支持单个项目或解决方案,因此,要支持多个项目,您必须使用 "solution",它不仅仅是一个文件夹,而是一个 sln 文件。

您的文件夹结构是反模式的,自然不受支持,因为 .NET Core 使用 SDK-style csproj 项目,它将所有源文件添加到 project-level 文件夹(csproj 文件所在的位置) ,因此在一个 project-level 文件夹中包含多个 csproj 文件仅适用于具有多个目标的一个项目。如果你的项目A和B在同一个文件夹中,这意味着它们可能包含重复的源文件,可能会导致类型冲突的错误,除非你在csproj文件中分别指定了源排除。

推荐的文件夹结构是

<Solution and git repository level folder>
 |-- src
 |    |-- <Project level folders>
 |    |    |-- <Folder structures based on namespace>
 |    |    |    └-- <Source files>
 |    |    |-- <Asset files with approprate folder structure>
 |    |    └-- <The csproj file>
 |    |-- Directory.Build.props (Common MSBuild props for all src projects)
 |    └-- Directory.Build.targets (Common MSBuild targets for all src projects)
 |-- test
 |--  └-- <Test projects with similar folder structure to src>
 |-- build
 |--  └-- <Common MSBuild props and targets files to be referenced by src and test>
 |-- docs
 |    └-- <Documents>
 |-- <Other repository assets>
 └-- <The sln file>