我正在使用Visual Studio 2017用C编写一些内容。当我打开一个新项目时,我有一些默认过滤器,并且在该项目的“添加”选项中只有过滤器,没有文件夹/目录。
我希望我的项目具有文件夹结构,但是不能在Visual Studio中将文件夹添加到项目中。联机查看时,我只能找到将现有文件夹添加到项目而不添加新文件夹的解决方案。
如何将新文件夹添加到Visual Studio C项目?
如何禁用过滤器?
答案 0 :(得分:1)
我对Visual Studio 2017(以及IDE的早期版本)及其在“文件视图”中的文件表示的看法是一种虚拟文件组织系统。 File View使您可以逻辑地组织文件,以更有用的方式展示实际的文件系统。
在“文件视图”中看起来像文件夹的图标并不是真正的文件夹,而是标签,称为过滤器,它使您可以根据自己的喜好对文件进行分组,而不管它们在物理上如何存储在持久性存储区中,例如硬盘驱动器。
过滤器更灵活,因为它们不对应于物理文件文件夹的层次结构,因为它们使您可以将单个文件夹中的所有文件组织为逻辑组。与将文件夹中的文件进行分组所使用的过滤器相比,过滤器可以更精细地完成此操作。过滤器还允许您将“文件视图”中多个文件夹中的文件归为一个逻辑文件夹。
但是,过滤器可能会造成混乱,因为我们大多数人都习惯于文件夹层次结构,以至于过滤器方法可以断开过滤器中表示的逻辑文件与文件夹中物理文件位置的连接。
我添加文件的典型方法
通常,我要做的是通过Windows创建物理文件夹,或者对现有Git或Subversion或VS Team Services源树进行克隆。对于新内容,我可以使用“新解决方案”或“新项目”向导创建我的初始起点,然后通过Windows物理地组织和添加文件和文件夹,然后进入Visual Studio IDE创建过滤器,然后将现有文件添加到过滤器。在某些情况下,我将在过滤器中创建子过滤器,以更好地组织物理文件夹中的文件。
对于新文件,我将仅使用Add New Item
菜单选项将该项添加到适当的项目中。如果右键单击过滤器名称,则新文件将自动添加到过滤器中。在某些情况下,当我在项目中添加了其他过滤器以组织文件时,我会将新创建的项目拖到适当的过滤器中,然后放到那里。
此拖放操作不会更改文件的物理位置,而是通过将其从一个过滤器移动到另一个过滤器来更改其逻辑位置。要将文件从一个文件夹物理移动到另一个文件夹,通常我会使用Windows。请记住,如果您确实使用Windows来移动文件,则还必须在文件分配到的Visual Studio 2017过滤器中修改该文件的条目,我通常会对文件执行Remove
,后跟{{1} },然后浏览到新位置。
您似乎不能在同一项目的多个过滤器中拥有相同的文件。
在某些情况下,当我Add Existing Item
时,将使用Add New item
按钮将显示在Add New Item
对话框中的建议文件夹更改为其他文件夹。而且,如果我需要对该文件使用不同的扩展名,那么我也会对此进行更改,这是在将新的C源文件添加到项目中时需要将Browse
扩展名更改为.cpp
的常见操作。 / p>
您还可以使用.c
按钮导航到一个文件夹,然后在其中创建新文件夹(如果您喜欢使用右键单击显示的文件列表中的菜单时显示的右键菜单)。文件夹。
不幸的是,Browse
对话框始终希望将文件与所有其他文件一起放入项目目录。 Add New Item
向导没有给您指定默认项目文件夹以外的任何内容的机会。在某些情况下,我已经使用Visual Studio IDE创建了C ++类,将它们从项目中删除,将物理文件移动到我想要的位置,然后将它们添加回项目中。
筛选方法似乎很好用,因为整个解决方案分为多个项目,每个项目都有自己的物理文件夹。多个项目可能对应于解决方案使用的特定DLL或静态库或其他组件。
另请参阅Can I configure Visual Studio to use real folders instead of filters in C++ projects?
文件夹和过滤器的屏幕截图示例
这是正在使用的资源的小项目的Windows文件夹视图:
这就是我设置过滤器的方式。通常,资源文件的列表可能会很长,但是我创建了两个子过滤器,以使位图文件从图标文件中逻辑分离出来,尽管它们都共享相同的物理资源文件夹。
此外,名为PepIncludes的过滤器对应于实际的相同物理文件夹,而名为“ Header Files”和“ Source Files”的过滤器则是文件组,它们均位于同一物理文件夹中,该物理文件夹与项目相同文件夹。
以下屏幕截图显示了过滤器如何提供灵活性。我有一个包含包含文件PepIncludes的文件夹,并且在此Visual Studio 2017解决方案中的两个不同项目中有相同的文件集合。在具有30或40个项目的解决方案中,这可以使管理文件变得更加容易。例如,您可以看到,修改文件“ ECR.h”后,两个文件列表(名称旁边的小红色复选标记)都显示了已被修改的事实。