我的文件夹结构如下:project / csproj A,project / csproj B 如果我在vs代码项目目录中打开,则omnisharp仅适用于csprojB。如果我在vs代码project / csproj A目录中打开,则omnisharp可以用于该项目。
该如何解决,这样我才能打开项目目录并为两个项目使用omnisharp?
如果这很重要,则损坏的项目为nunit类型。我尝试重新加载vscode,禁用/启用omnisharp。 我用
在空目录中创建了项目dotnet new nunit -n=projectB
答案 0 :(得分:1)
一个解决方案是由sln文件指定的,如果还没有解决方案,只需在解决方案级别的文件夹中创建一个新的解决方案即可。
dotnet new sln
然后,您必须将项目引用添加到解决方案中
dotnet sln path/to/solution add path/to/project
如果omnisharp没有更新它,请重新启动它或vs代码。
Omnisharp仅支持单个项目或解决方案,因此,要支持多个项目,必须使用“解决方案”,它不仅是文件夹,而且带有sln文件。
您的文件夹结构是反模式的,自然不受支持,因为.NET Core使用SDK样式的csproj项目,该项目将所有源文件添加到项目级文件夹(csproj文件所在的位置)中,因此具有多个cproj文件一个项目级文件夹中的内容仅适用于具有多个定位条件的一个项目。如果项目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>