vscode omnisharp не работает для решения, но работает для проекта - PullRequest
0 голосов
/ 17 мая 2019

У меня есть папки, структурированные так: project / csproj A, project / csproj B Если я открою в vs код проекта dir, omnisharp работает только для csproj B. Если я открою каталог vs code project / csproj A, то для этого проекта будет работать omnisharp.

Как это исправить, чтобы я мог открыть директорию проекта и иметь работающий omnisharp для обоих проектов?

Разбитый проект имеет тип nunit, если это имеет значение. Я попытался перезагрузить vscode, отключив / включив omnisharp. Я создал проект в пустой директории с

dotnet new nunit -n=projectB

1 Ответ

1 голос
/ 18 мая 2019

Решение указывается в файле sln, если у вас его еще нет, просто создайте новое в папке уровня решения

dotnet new sln

И затем, вы должны добавить ссылки на проект к решению

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

И если omnisharp не обновляет его, перезапустите его или воспользуйтесь кодом.

Omnisharp может поддерживать только один проект или решение, поэтому для поддержки нескольких проектов необходимо использовать «решение», которое представляет собой не просто папку, а файл sln.

Структура вашей папки является антипаттерном и не поддерживается естественным образом, потому что .NET Core использует проект csproj в стиле SDK, который добавляет все исходные файлы в папку уровня проекта (в которой находится файл csproj), поэтому имеется несколько файлов 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>
...