Понимание того, как Visual Studio обрабатывает проекты Angular - PullRequest
0 голосов
/ 10 апреля 2019

Я работал над проектом, созданным с использованием Visual Studio 2017 и шаблона по умолчанию «Asp.NET Core + Angular».

Проект работает правильно, но через некоторое время, работая над ним, мне стало любопытно и хотелось точно знать, как VS обрабатывает такие проекты.

Итак, я открыл файл .csproj и должен сказать, что не понимаю логики или причины всех элементов <ItemGroup>. Я подытожил свои сомнения на следующем рисунке:

enter image description here

Может кто-нибудь пролить свет на мои вопросы?

1 Ответ

0 голосов
/ 16 апреля 2019

Итак, после некоторого исследования я пришел к выводу, что почти все элементы на скриншоте, который я разместил, бесполезны.

Кажется, они создаются Visual Studio, когда вы удаляете / перемещаете элементы внутри IDE, итогда они просто сидят там, накапливаясь.Это похоже на то, что VS явно «помещает в черный список» элементы, если вы перемещаете / удаляете их с помощью обозревателя решений, хотя этого не происходит, если вы просто перемещаете / удаляете файлы вручную с диска.

После некоторого тестирования япришли к такому выводу: единственными важными записями на скриншоте выше являются те, в которых упоминается SpaRoot (папка, в которой находится исходный код приложения Angular).

Если я правильно понимаю, первая запись:

<Content Remove="$(SpaRoot)**" />

Удаляет всю папку SpaRoot из процесса публикации, поэтому она не будет включена в окончательные распространяемые файлы.Это имеет смысл, и потому, что эта папка будет скомпилирована через npm во время процесса публикации в другой каталог (конец файла проекта, не включенный в мой скриншот).Поэтому мы не хотим включать его содержимое в основной этап компиляции, так как они были бы бесполезны.

Вторая запись:

<None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />

говорит, что папка SpaRoot«часть проекта» (должна быть показана в VS Solution Explorer), но не играет роли в компиляции (это, по-видимому, означает элемент None).Однако этот элемент исключает подпапку node_modules, поэтому он не отображается в обозревателе решений, что имеет смысл.

...