次の方法で共有


vcxproj.filters ファイル

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

ソリューション エクスプローラーのフォルダー ビューのスクリーンショット。

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

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

Visual Studio では、このファイルが自動的に作成されます。 デスクトップ アプリケーションの場合、定義済みの論理フォルダー (filters) は、ソース ファイルヘッダー ファイルリソース ファイルです。 UWP などの他のプロジェクト タイプでは、既定のフォルダーのセットが異なる場合があります。 Visual Studio では、各フォルダーに既知のファイルの種類が自動的に割り当てられます。 カスタム名のフィルターまたはカスタム ファイルの種類を保持するフィルターを作成する場合は、プロジェクトのルート フォルダーまたは既存のフィルターの下に独自のフィルター ファイルを作成できます。 (References および External Dependencies は、フィルター処理に関与しない特殊なフォルダーです)。

次の例は、前に示した例のフィルター ファイルを示しています。 フラット階層を持ちます。つまり、入れ子になった論理フォルダーはありません。 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>