vcxproj.filters ファイル

フィルター ファイル (*.vcxproj.filters) は、ルート プロジェクト フォルダーにある MSBuild 形式の XML ファイルです。 ソリューション エクスプローラーのどの論理フォルダーにどのファイルの種類が入るかを指定します。 次の図では、ファイルは .cpp [ソース ファイル] ノードの下にあります。 ファイルは .h [ヘッダー ファイル] ノードの下にあり.ico.rc、ファイルは [リソース ファイル] の下にあります。 この配置は、フィルター ファイルによって制御されます。

Screenshot of the Logical folders view in Solution Explorer.

ソリューション エクスプローラーは、ヘッダー ファイル (MFCApplication1.h などのファイルを含む)、リソース ファイル (MFCApplication1.ico などのファイルを含む)、およびソース ファイル (MFCApplication1.cpp などのファイルを含む) の呼び出しと共に表示されます。

カスタム filters ファイルの作成

Visual Studio では、このファイルが自動的に作成されます。 デスクトップ アプリケーションの場合、定義済みの論理フォルダー (filters) は、ソース ファイルヘッダー ファイルリソース ファイルです。 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>