进行扩展,为 visual studio 的两个不同版本构建不同的菜单

Make extension to build different menus for two different versions of visual studio

Visual Studio 扩展的文档说我可以对 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上都没有出现。

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

因为你的菜单组是在你构建包时定义的,你的菜单组看起来是基于你构建它的 VS 版本。

此致,