C 项目中的Visual Studio 2017文件夹

C 项目中的Visual Studio 2017文件夹,c,visual-studio,visual-studio-2017,C,Visual Studio,Visual Studio 2017,我正在使用Visual Studio 2017用C编写一些东西。当我打开一个新项目时,我有一些默认过滤器,在项目的“添加”选项中只有过滤器,没有文件夹/目录 我希望我的项目具有文件夹结构,但无法在Visual Studio中将文件夹添加到项目中。通过在线查看,我只能找到将现有文件夹添加到项目而不是添加新文件夹的解决方案 如何将新文件夹添加到Visual Studio C项目 如何禁用过滤器?我认为Visual Studio 2017(早期版本的IDE)及其在文件视图中的文件表示方式是一种虚拟文件

我正在使用Visual Studio 2017用C编写一些东西。当我打开一个新项目时,我有一些默认过滤器,在项目的“添加”选项中只有过滤器,没有文件夹/目录

我希望我的项目具有文件夹结构,但无法在Visual Studio中将文件夹添加到项目中。通过在线查看,我只能找到将现有文件夹添加到项目而不是添加新文件夹的解决方案

如何将新文件夹添加到Visual Studio C项目


如何禁用过滤器?

我认为Visual Studio 2017(早期版本的IDE)及其在文件视图中的文件表示方式是一种虚拟文件组织系统。文件视图允许您逻辑地组织文件,以更有用的方式显示实际的文件系统

在文件视图中看起来像文件夹的图标不是真正的文件夹,而是标签,称为过滤器,它允许您根据自己的喜好对文件进行分组,而不管它们在持久存储区域(如硬盘驱动器)中的物理存储方式如何

过滤器不与物理文件夹层次结构相对应,因此更加灵活,因为它们允许您将所有位于单个文件夹中的文件组织到逻辑组中。过滤器允许以比文件夹中文件分组通常使用的更细的粒度完成此操作。过滤器还允许您将多个文件夹中的文件分组到文件视图中的单个逻辑文件夹中

但是,过滤器可能会令人困惑,因为我们大多数人都习惯于文件夹层次结构,因此过滤器方法可以将过滤器中表示的逻辑文件与文件夹中的物理文件位置断开连接

我添加文件的典型方法

通常我要做的是通过Windows创建物理文件夹,或者克隆现有Git、Subversion或VS团队服务源代码树。有了新功能,我可以使用“新建解决方案”或“新建项目向导”创建初始起点,然后通过Windows物理组织和添加文件和文件夹,然后进入Visual Studio IDE创建过滤器,然后将现有文件添加到过滤器。在某些情况下,我会在过滤器中创建子过滤器,以便更好地组织物理文件夹中的文件

对于新文件,我将只使用
添加新项目
菜单选项将项目添加到适当的项目中。如果右键单击过滤器名称,新文件将自动添加到过滤器中。在某些情况下,当我向项目中添加了其他过滤器来组织文件时,我会将新创建的项目拖到适当的过滤器中,然后将其放到那里

此拖放操作不会更改文件的物理位置,而是通过将其从一个过滤器移动到另一个过滤器来更改其逻辑位置。要将文件从一个文件夹物理地移动到另一个文件夹,我通常会在Windows中这样做。请记住,如果使用Windows实际移动文件,还必须在Visual Studio 2017筛选器中修改该文件的条目,我通常会对该文件执行
删除
,然后添加现有项,并浏览到其新位置

似乎不能在同一项目中的多个筛选器中包含同一文件

在某些情况下,当我添加新项目时,我将使用浏览按钮从添加新项目对话框中显示的建议文件夹更改为其他文件夹。如果我需要对文件使用不同的扩展名,那么我也会进行更改,这是在向项目中添加新的C源文件时的常见操作,需要将
.cpp
扩展名更改为
.C

您还可以使用
Browse
按钮导航到一个文件夹,如果愿意,您可以使用右键单击菜单创建一个新文件夹,该菜单在显示的文件和文件夹列表中单击鼠标右键时显示

不幸的是,
addnewitem
对话框总是希望将一个文件与所有其他文件一起放入项目目录。
addclass
向导不允许您指定默认项目文件夹以外的任何内容。在某些情况下,我使用VisualStudioIDE创建C++类,从项目中移除它们,将物理文件移动到我希望它们的位置,然后将它们添加到项目。

过滤器方法似乎工作得很好,因为整个解决方案分为多个项目,每个项目都有自己的物理文件夹。多个项目可能对应于解决方案使用的特定DLL或静态库或其他组件

另见

文件夹和过滤器的示例屏幕截图

以下是正在使用的资源的小项目的Windows文件夹视图:

这就是我设置过滤器的方法。通常,资源文件的列表可能相当长,但是我创建了两个子过滤器,从逻辑上将位图文件与图标文件分开,尽管它们共享同一个物理资源文件夹

此外,名为PepIncludes的过滤器与名为same的实际物理文件夹相对应,而名为“头文件”和“源文件”的过滤器是所有文件组,它们都位于与项目文件夹名相同的物理文件夹中

下面的屏幕截图显示了过滤器如何提供灵活性。我有一个包含文件的文件夹PepIncludes,我在这个Visual Studio 2017解决方案的两个不同项目中有相同的文件集合。在一个包含30或40个项目的解决方案中,这可以使管理文件变得更加容易。例如,您可以看到,在修改文件“ECR.h”后,它已被修改的事实显示在两个过滤器文件列表中(名称旁边的红色小复选标记)