Понимание того, как Visual Studio обрабатывает проекты Angular

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

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

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

Понимание того, как Visual Studio обрабатывает проекты Angular

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

Вы единственный, кто работает над этим проектом? В частности, элементы, перечисляющие действия «Удалить», обычно генерируются вручную при выборе папок «исключить из проекта» или вручную изменяется тип элемента. В чистом проекте этих элементов нет.

Martin Ullrich 10.04.2019 13:56

@MartinUllrich: Я действительно единственный человек, работающий над этим проектом. Я никогда не использовал опцию «исключить из проекта»… однако я удалял/перемещал элементы в проекте, перетаскивая их в Visual Studio.

Master_T 10.04.2019 13:58
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
2
283
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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

Другие вопросы по теме