我一直在研究使用Visual Studio 2017和“ Asp.NET Core + Angular”默认模板创建的项目。
该项目正常运行,但是经过一段时间的研究后,我感到好奇,并想确切地了解VS如何处理此类项目。
所以我打开了.csproj
文件,我必须说我不理解所有<ItemGroup>
元素背后的逻辑或原因。我在下图中总结了我的疑问:
有人能阐明我的问题吗?
答案 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
子文件夹,因此在解决方案资源管理器中未显示该项目。