扩展为两个不同版本的Visual Studio构建不同的菜单

时间:2019-06-25 18:29:10

标签: visual-studio visual-studio-2017 visual-studio-extensions visual-studio-2019 vsct

Visual Studio Extensions的文档说,我可以对vsct文件中的元素应用条件。

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

我一直在尝试为VS2019和其他菜单构建不同的菜单。我创建了一个条件编译符号,该符号为Visual Studio 2019+定义了VS2019

<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 个答案:

答案 0 :(得分:1)

.VSCT文件被编译为binary command table output (.cto) resource,然后作为资源嵌入到您的程序包程序集中。 .cto资源在构建时进行编译,并且在构建.cto资源时评估条件。

由于在构建程序包时定义了菜单组,因此菜单组看起来将基于构建它的VS版本作为父级。

此致