Фильтры обозревателя решений в Visual Studio 2010 - PullRequest
4 голосов
/ 05 апреля 2011

Я ищу информацию о синтаксисе для нового файла Visual Studio 2010 .vcxproj.filters. Есть ли способ выполнить фильтрацию по шаблону, основываясь не только на расширении?

Вот сценарий:

У нас есть инструмент, который записывает файл проекта для Visual Studio 2005, определяя все сообщения в приложении, а также связанные с ними сгенерированные классы. В файле проекта мы сгруппировали файлы C ++ не только по h / cpp, но и по пользовательским фильтрам, поэтому наш проект может выглядеть примерно так:

  • сообщений ( <-- that's the .vcproj file)
    • GENERATED_MSGS
      • COM
        • ч
          • COMRequest.h
          • COMRequestAck.h
        • CPP
          • COMRequest.cpp
          • COMRequestAck.cpp
      • DATA
        • ч
          • DATARequest.h
          • DATARequestAck.h
        • CPP
          • DATARequest.cpp
          • DATARequestAck.cpp
      • ЗАКАЗАТЬ
        • ч
        • касты
    • Заголовочные файлы
      • HandCraftedMessage1.h
      • HandCraftedMessage2.h
    • Исходные файлы
      • HandCraftedMessage1.cpp
      • HandCraftedMessage2.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"/>
...

В 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>, но он недостаточно гибок для меня, поскольку я хочу разбить его больше, чем просто по расширению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...