Visual Studio 2010 中的解决方案资源管理器筛选器

Ben*_*Ben 5 projects-and-solutions filter visual-studio-2010

我正在寻找有关新的 Visual Studio 2010 .vcxproj.filters 文件的语法信息。有没有一种方法可以不仅仅基于扩展名进行通配符过滤?

这是场景:

我们有一个工具可以为 Visual Studio 2005 编写一个项目文件,定义应用程序中的所有消息以及关联的生成类。在项目文件中,我们不仅按 h/cpp 对 C++ 文件进行分组,还按用户定义的过滤器对 C++ 文件进行分组,因此我们的项目可能如下所示:

  • 消息      ( <-- that's the .vcproj file)
    • GENERATED_MSGS
      • 通讯
        • H
          • COMRequest.h
          • COMRequestAck.h
        • 程序文件
          • COMRequest.cpp
          • COMRequestAck.cpp
      • 数据
        • H
          • 数据请求.h
          • 数据请求确认.h
        • 程序文件
          • 数据请求.cpp
          • 数据请求确认.cpp
      • 命令
        • H
        • 程序文件
    • 头文件
      • 手工制作的消息1.h
      • 手工制作的消息2.h
    • 源文件
      • 手工制作的消息1.cpp
      • 手工制作的消息2.cpp
    • MyFileThatDefinesTheMessages.xml

过滤器(COM、DATA、ORDER 等)存储在 .vcproj 文件中:

...
<Files>
    <Filter Name="GENERATED_MSGS">
        <Filter Name="COM">
            <Filter Name="COM">
                <Filter Name="h">
                    <File RelativePath=".\COMRequest.h"/>
...
Run Code Online (Sandbox Code Playgroud)

在 Visual Studio 2010 中,为项目定义的文件位于 .vcxproj 文件中,但如何显示它们的筛选器存储在 .vcxproj.filters 文件中。由于我们的过滤器始终由类名的第一部分确定,因此我希望只使用消息生成工具创建 .vcxproj 文件并修改 .filters 文件以使用通配符将文件放入正确的过滤器中。例如,一个名为 的文件ORDERRequest.h应该进入GENERATED_MSGS/ORDER/h过滤器。有没有一种方法可以定义通配符来执行此操作,以便 ORDER*.h 将进入一个文件夹,而 COM*.h 将进入另一个文件夹?我已经遇到过这个<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>标签,但这对我来说不够灵活,因为我想不仅仅通过扩展来分解它。