解决方案资源管理器中显示了以下节点的标注:头文件 (,其中包含 MFCApplication1.h) 等文件、包含 MFCApplication1.ico) 等文件的 Resource Files (,以及包含 MFCApplication1.cpp) 等文件的源文件 (。

创建自定义筛选器文件

Visual Studio 自动创建此文件。 对于桌面应用程序,预定义的逻辑文件夹(筛选器)是:源文件、头文件和资源文件。 其他项目类型(如 UWP)可能有不同的默认文件夹集。 Visual Studio 会自动为每个文件夹分配已知文件类型。 如果要创建具有自定义名称的筛选器或包含自定义文件类型的筛选器,可以在项目的根文件夹中或现有筛选器下创建自己的筛选器文件。 ( 引用 外部依赖项 是不参与筛选的特殊文件夹。)

以下示例显示前面所示示例的筛选器文件。 其层次结构是扁平的,也就是没有嵌套逻辑文件夹。 UniqueIdentifier 节点是可选的。 它使 Visual Studio 自动化接口能够查找筛选器。 Extensions 也是可选的。 将新文件添加到项目中时,会将其添加到具有匹配文件扩展名的最顶层筛选器。 若要将文件添加到特定筛选器,请右键单击筛选器,然后选择“添加新项”。

包含 ClInclude 节点的 ItemGroup 是在项目首次启动时创建的。 如果要生成自己的 vcxproj 文件,请确保所有项目项在筛选器文件中也有一个条目。 ClInclude 节点中的值会覆盖基于文件扩展名的默认筛选。 使用 Visual Studio 向项目添加新项时,IDE 会在筛选器文件中添加单个文件条目。 如果更改文件的扩展名,筛选器不会自动重新分配。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="Source Files">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="Header Files">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
    </Filter>
    <Filter Include="Resource Files">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="MFCApplication1.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="MFCApplication1Dlg.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="stdafx.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="targetver.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="Resource.h">
      <Filter>Header Files</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="MFCApplication1.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="MFCApplication1Dlg.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="stdafx.cpp">
      <Filter>Source Files</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <ResourceCompile Include="MFCApplication1.rc">
      <Filter>Resource Files</Filter>
    </ResourceCompile>
  </ItemGroup>
  <ItemGroup>
    <None Include="res\MFCApplication1.rc2">
      <Filter>Resource Files</Filter>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Image Include="res\MFCApplication1.ico">
      <Filter>Resource Files</Filter>
    </Image>
  </ItemGroup>
</Project>

若要创建嵌套逻辑文件夹,请声明筛选器 ItemGroup 中的所有节点,如下所示。 每个子节点必须声明指向最顶层父级节点的完整逻辑路径。 在以下示例中,必须声明空 ParentFilter ,因为它在后面的节点中被引用。

  <ItemGroup>
    <Filter Include="ParentFilter">
    </Filter>
    <Filter Include="ParentFilter\Source Files"> <!-- Full path to topmost parent.-->  
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <!--  Optional-->
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <!-- Optional -->
    </Filter>
    <Filter Include="Header Files">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
    </Filter>
  </ItemGroup>