了解Visual Studio如何处理Angular项目

时间:2019-04-10 11:44:26

标签: angular visual-studio visual-studio-2017 csproj

我一直在研究使用Visual Studio 2017和“ Asp.NET Core + Angular”默认模板创建的项目。

该项目正常运行,但是经过一段时间的研究后,我感到好奇,并想确切地了解VS如何处理此类项目。

所以我打开了.csproj文件,我必须说我不理解所有<ItemGroup>元素背后的逻辑或原因。我在下图中总结了我的疑问:

enter image description here

有人能阐明我的问题吗?

1 个答案:

答案 0 :(得分:0)

因此,经过一些研究,我得出的结论是,我张贴的屏幕快照中的几乎所有项目都是无用的。

当您从IDE内部删除/移动项目时,它们似乎是由Visual Studio创建的,然后它们就坐在那里,不断积累。如果您使用解决方案资源管理器移动/删除项目,就像VS明确将其列入“黑名单”,而仅从磁盘中手动移动/删除文件,则不会发生这种情况。

经过一些测试,我得出了这个结论:上面的屏幕快照中唯一重要的条目是提及SpaRoot(Angular应用程序源代码所在的文件夹)的条目。

如果我理解正确,则第一个条目:

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

正在从发布过程中删除整个SpaRoot文件夹,因此它将不包含在最终的分布式文件中。这是有道理的,因为在发布过程中该文件夹将通过npm编译到另一个目录(项目文件的末尾,未包含在我的屏幕快照中)。因此,我们不想将其内容包含在主要的编译步骤中,因为它们将毫无用处。

第二个条目:

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

表示SpaRoot文件夹是“项目的一部分”(应在VS Solution Explorer中显示),但在编译中不起作用(这就是None元素的含义)。但是,该项目不包含node_modules子文件夹,因此在解决方案资源管理器中未显示该项目。