Сделайте расширение для создания разных меню для двух разных версий Visual Studio
В документации расширений Visual Studio говорится, что я могу применять условные выражения для элементов внутри vsct
файл.
Я пытался создать разные меню для VS2019 и другое для других. Я создал условный символ компиляции, который определяет VS2019
для Visual Studio 2019+.
<Menu guid="GuidMenuSet" id="GroupIDMenuBaseGroup" priority="0x0100" type="Menu"
Condition="Defined(VS2019)">
<Parent guid="guidSHLMainMenu" id="IDG_VS_MM_TOOLSADDINS"/>
<Strings>
<ButtonText>My Text</ButtonText>
<CommandName>MyText</CommandName>
</Strings>
</Menu>
<Menu guid="GuidMenuSet" id="GroupIDMenuBaseGroup"
priority="0x0100" type="Menu"
Condition="!Defined(VS2019)">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
<Strings>
<ButtonText>My Text</ButtonText>
<CommandName>MyText</CommandName>
</Strings>
</Menu>
Меню не отображается ни на VS2017, ни на VS2019.
1 ответ
Решение
Файл.VSCT компилируется в ресурс вывода двоичной таблицы команд (.cto), который затем внедряется в сборку пакета в качестве ресурса. Этот ресурс.cto компилируется во время сборки, а условные выражения оцениваются при создании ресурса.cto.
Поскольку ваша группа меню определяется при сборке пакета, ваша группа меню выглядит как родительская в зависимости от версии VS, с которой вы ее создали.
С уважением,