我的文件夹结构如下:project / csproj A,project / csproj B如果在vs代码项目目录中打开,omnisharp仅适用于csprojB。如果我在vs代码project / csproj A目录中打开,则omnisharp适用于此项目。
如何解决该问题,以便我可以打开项目目录并为两个项目使用有效的omnisharp?
如果重要的话,残破的项目是nunit类型。我尝试重新加载vscode,禁用/启用omnisharp。我在空目录中创建了项目
dotnet new nunit -n=projectB
解决方案由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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句