1

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 上都不会出现。

4

1 回答 1

2

.VSCT 文件被编译为二进制命令表输出 (.cto) 资源,然后作为资源嵌入到您的包程序集中。此 .cto 资源在构建时编译,在构建 .cto 资源时评估条件。

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

真挚地,

于 2019-06-26T03:49:57.787 回答