篩選檔案 (*.vcxproj.filters
) 是 MSBuild 格式的 XML 檔案,位於根項目資料夾中。 它會指定哪些文件類型會進入 方案總管 中的邏輯資料夾。 在下圖中,檔案 .cpp
位於 [ 來源檔案 ] 節點底下。 檔案.h
位於 [頭檔] 節點底下,而.rc
.ico
檔案位於 [資源檔] 底下。 此位置是由篩選檔案所控制。
方案總管會顯示下列節點的呼叫:頭檔(其中包含 MFCApplication1.h 等檔案)、資源檔(包含MFCApplication1.ico等檔案),以及原始程序檔(包含MFCApplication1.cpp等檔案)。
建立自定義篩選檔案
Visual Studio 會自動建立此檔案。 針對傳統型應用程式,預先定義的邏輯資料夾(篩選器)包括: 來源檔案、 頭檔 和資源 檔。 其他項目類型,例如UWP可能有一組不同的預設資料夾。 Visual Studio 會自動將已知的文件類型指派給每個資料夾。 如果您想要使用自定義名稱或保存自定義檔類型的篩選條件來建立篩選,您可以在專案的根資料夾中或現有篩選下建立自己的篩選檔案。 (參考 和 外部相依性 是不參與篩選的特殊資料夾。
範例
下列範例顯示上述範例的篩選檔案。 它有一般階層;換句話說,沒有巢狀邏輯資料夾。 UniqueIdentifier
為選擇性節點。 它可讓Visual Studio自動化介面尋找篩選條件。 Extensions
也是選擇性的。 將新檔案新增至專案時,它會新增至具有相符擴展名的最上層篩選。 若要將檔案新增至特定篩選,請以滑鼠右鍵按下篩選,然後選擇 [ 新增專案]。
ItemGroup
包含節點的 ClInclude
,會在專案第一次啟動時建立。 如果您要產生自己的 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>