【问题标题】:Why does Visual Studio treat folders as projects?为什么 Visual Studio 将文件夹视为项目?
【发布时间】:2015-09-16 21:15:35
【问题描述】:

我有一个结构如下(简化)的 Visual Studio 解决方案:

Root Folder
|   Solution.sln
|   
+---Build
|
+---Code
|   +---Business Layer
|   |   |   Business Layer.csproj
|   +---Client
|   |   |   Client.csproj
|   |           
|   +---Data Access Layer
|   |   |   Data Access Layer.csproj
|   |
|   +---Database
|   |   |   Database.sqlproj
|   |
|   \---Database User Management
|       |   Database User Management.pssproj
|
+---Documentation
|
+---Packages
|                
+---Tests

这里的 tl;dr 是我所有的项目都存储在 2 个单独的文件夹下。代码......以及单元测试项目的程序代码和测试。

但是,在我的 .sln 文件中,我注意到以下几行:

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Code", "Code", "{2C7E59FD-BA42-4D31-A5E0-818583B7E1EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{1D1FDB9D-78EC-4552-B9EE-17E02E92FC2E}"
EndProject

这些文件夹不是项目,它们只是用于组织项目,因此我不会将我的单元测试项目与实际的软件项目混在一起。

从 .sln 文件中删除这些行基本上会将我的所有项目放在解决方案资源管理器树中的一个节点下,但似乎保留了文件夹结构。

奇怪的是,它只针对代码和测试文件夹而不是文档和包。

Visual Studio 应该这样组织项目吗?

编辑:回答为什么我什至费心修补 .sln 文件。当我在 Visual Studio 中打开它时,它说有 8 个项目要加载,这很奇怪,因为目前只有 5 个。(x3 .csproj、x1 .pssproj 和 x1 .sqlproj)

【问题讨论】:

  • 请永远不要成为医生。 “这些东西在这里做什么?我只是要把它舀出来。为什么甚至需要它?”
  • 我无意成为其中一员,所以我认为我们在那里很安全。 ;-) 我只是想了解 VS 如何将这些文件夹标记为项目,而不是其他项目。
  • 呃,原来如此。该项目类型 2150E333-8FDC-42A3-9474-1A3956D46DE8 的指南用于文件夹。您可以搜索它,也许会找到更多信息。很久以前可能是支持文件夹的黑客攻击,但他们从未更改过它。谁知道?

标签: visual-studio solution


【解决方案1】:

这就是 Visual Studio 解决方案文件格式的工作原理。虽然显示在ProjectEndProject 之间,但文件夹仍然是文件夹。

【讨论】:

  • 那么为什么我的其他文件夹不会以相同的方式标记?也许与他们没有项目有关?例如,文档中充满了数百个降价文档,而包仅包含来自 Nuget 的程序集。这些程序集和降价文件也嵌套了几层。
  • blog.bfitz.us/?p=955 这样的帖子可以为您提供更多见解。您现在甚至可以查看 MSBuild 源代码并了解它如何解析解决方案文件,github.com/Microsoft/msbuild/blob/…
  • Aaaand... 在阅读了 Github 上的链接后,这几乎是完全合理的。谢谢。
猜你喜欢
  • 2018-10-25
  • 2012-09-21
  • 2012-11-01
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多