Сделайте расширение для создания разных меню для двух разных версий Visual Studio - PullRequest
1 голос
/ 25 июня 2019

В документации к Visual Studio Extensions сказано, что я могу применять условные выражения для элементов в файле vsct.

https://github.com/MicrosoftDocs/visualstudio-docs/blob/master/docs/extensibility/vsct-xml-schema-conditional-attributes.md

Я пытался создать различные меню для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 Ответ

1 голос
/ 26 июня 2019

Файл .VSCT компилируется в ресурс двоичной таблицы команд *1001*, который затем внедряется в сборку пакета как ресурс.Этот ресурс .cto компилируется во время сборки, а условные выражения оцениваются при создании ресурса .cto.

Поскольку ваша группа меню определяется при сборке пакета, ваша группа меню выглядит как родительская на основес какой версией VS вы его построили.

С уважением,

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