【问题标题】:Project Directory Structure Lost in Visual Studio?项目目录结构在 Visual Studio 中丢失?
【发布时间】:2017-03-23 19:55:49
【问题描述】:

我正在学习 Visual Studio 2015 社区。我是一个经验丰富的程序员,但对 VS 很陌生,文件表示让我感到困惑。我创建了一个解决方案,并添加了一个现有项目。 VS 在解决方案资源管理器的一个树级别上向我显示所有项目文件(在我的情况下是一个 C++ 项目,所以 .c.cpp.h 文件)。

相反,如果我用 Sublime Text、VS Code、notepad++ 或类似的东西打开所述项目,我会看到正确的目录结构,因为它位于磁盘驱动器上;就像在文件资源管理器/Finder 或终端中的 ls/dir 中看到的那样。

我在发帖之前已经完成了我的作业,在下面的帖子中,@Andrey 说:

MSVS中恐怕没有“目录”这样的概念 结构”。此外,MSVS 并不真正需要它,因为它使用平面 项目和层次结构基于项目级别,而不是基于 文件/目录级别。

因为没有这样的东西 - 你不能自动拥有它 也不是手动的。 MSVS 有解决方案文件夹,这是完全不同的事情 并且将真实文件夹表示为解决方案没有多大意义 文件夹。

Visual Studio as Code Browser : How to preserve the directory structure?

这是真的吗?文件的排列有很多意义,VS中的平面表示使项目更难理解;目录结构中的文件位置很重要。有没有办法在 VS 中查看正确的目录结构?

在我的情况下,我正在使用 Quickfix,它支持多个版本(4.0、4.1、4.2 等)。每一个都有不同的类和同名的文件。

从下面的屏幕截图中可以看出,它们都整齐地排列在磁盘上的不同文件夹中,但是 VS 对这些文件的表示非常混乱:

【问题讨论】:

  • 您可以在解决方案资源管理器中创建文件夹。这就是我在我的项目中所做的。话虽如此,我正在使用CMake 来生成我的项目。我有CMake 将解决方案文件夹添加到我的源代码中的大多数文件夹,但是它与目录结构不完全匹配。
  • 可以导入已经有目录结构的文件的大型项目,并在VS中自动创建相应的文件夹吗?
  • 我不知道非CMake的方式。

标签: visual-studio visual-studio-2015 directory-structure solution


【解决方案1】:

我发现@Paul Easter 在下面的帖子中给出的答案对理解这个“怪癖”非常有帮助,这确实是一个“功能”。一个不同的项目结构概念正在起作用:

但至于你不希望解决方案文件夹表现得像 “物理”文件夹是因为您的解决方案布局可能不一定 使用与源代码控制布局相同的约定。解决方案 文件夹允许您自定义项目的层次结构,以便 您可以按照自己喜欢的方式将项目和项目组合在一起,然后 决定你不喜欢它并再次改变它而不必去 通过移动源代码控制项目的噩梦和 激怒了团队的其他成员。

Visual Studio Solutions Folder as real Folders

这是个好主意吗?我可以看到一些人想要它的地方,因为它允许他们根据需要安排项目文件。在这一点上,我不喜欢它;我敢肯定,部分原因是它对我来说是新的,但也有以下两个原因:
1、在一个有组织的项目中,目录层次不是任意的;首席工程师有充分的理由以某种方式安排文件。
2.它在VS文件表示和操作系统结构之间增加了一层抽象。我喜欢直接访问我正在处理的文件;使用 VS 系统时,我感到奇怪且怪异地与 VS 中的底层文件脱节。我必须承认,我担心这一层有其异常,会给我带来麻烦。

【讨论】:

  • 我发现学习 Visual C++ 非常复杂。难怪Java起飞了。我现在正试图弄清楚#include "ABC/ABC_Client.h" 的含义。文件夹重新提上日程了吗?我认为前缀是解决方法。
  • #include 语句可以做到这一点:将一个文件包含到另一个文件中。把它想象成一个大的“复制和粘贴”。在这种情况下,您将文件 ABC_Client.h 包含到您的文件中,该文件位于目录 ABC 中。请注意,引号 (") 表示本地包含,而像 #include <iostream> 这样的大于小于大括号表示从系统路径包含,通常类似于 Linux 上的 /usr/local
  • 就你的元点而言,是的,C++ 可能很复杂,但好处是它速度快、功能强大且报酬丰厚。不要因此而恨我,但是,不管你信不信,过了一会儿,它开始看起来很漂亮。疯狂有一个方法——坚持下去;你可以得到它:D
  • 谢谢@kmiklas。这是令人鼓舞的。此外,我了解了宏和文件路径,并且 VS 正在遍历路径,查找内部包含 ABC_Client.h 的 ABC 文件夹。这是一场小小的胜利。
  • 干得好,彼得。我现在给你的建议是在 Hackerrank 上做所有的 C++ 练习。然后转到算法部分,并用 C++ 编写它们。它们不仅是大问题:按难度顺序排列,涉及许多关键点,而且对于当今大多数公司来说,面试过程的第一道关口是 Hackerrank 问题。 :^) hackerrank.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
相关资源
最近更新 更多