如何在Visual Studio扩展中有条件地显示/隐藏命令

3

我正在创建一个Visual Studio扩展程序,它应该执行以下活动:

  1. 在项目上右键单击时,应显示一个命令。
  2. 对于特定的项目应该显示特定的命令。

例如: enter image description here

我已经添加了一个命令菜单,其中有两个命令。但是我想只在右键单击ABC项目时显示“Command for Proj ABC”,同样地,当右键单击XYZ项目时应显示“Command for Proj XYZ”。

这种情况是否可能?我该如何实现?

1个回答

4
你需要在.vsct中为你的命令添加DynamicVisibility CommandFlag,并根据当前选择的项目在OnBeforeQueryStatus处理程序中设置Visible状态。请参见更改菜单命令的文本的示例。

它可以工作,但是从第二次开始。例如,如果我运行VS实验(调试)并在该实例中打开一个解决方案,然后右键单击任何项目,它会显示所有命令。但是当我单击任何命令,然后右键单击任何项目时,此时才会显示正确的命令。 - EnigmaticJohn
@EnigmaticJohn,听起来你的扩展在你点击命令之前没有加载。你可能需要添加ProvideAutoLoadAttribute https://learn.microsoft.com/en-us/visualstudio/extensibility/loading-vspackages?view=vs-2019 - Sergey Vlasov
[ProvideAutoLoad(UIContextGuids.SolutionExists, PackageAutoLoadFlags.BackgroundLoad)] 这个方法是可以用的。但是需要大约30秒时间才能在打开解决方案后生效。谢谢。 - EnigmaticJohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接