Расширение Visual Studio — правило контекста пользовательского интерфейса не применяетсяC#

Место общения программистов C#
Anonymous
Расширение Visual Studio — правило контекста пользовательского интерфейса не применяется

Сообщение Anonymous »

Я работаю над разработкой расширения Visual Studio, которое по сути будет инструментом, помогающим выполнять некоторые операции с файлами JSON, которые нам необходимо выполнять регулярно. С этой целью моя цель — создать пункт контекстного меню Solution Explorer, который отображается только при щелчке правой кнопкой мыши по файлам JSON. Мне удалось заставить команду работать, однако она отображается для каждого файла. Я даже пытался использовать примеры с веб-сайта Microsoft только для файлов .config или .cs, но даже это не сработало; команда по-прежнему отображается для каждого элемента в проводнике.
Используя пример Microsoft для файлов .config, мой пакет определяется как:

Код: Выделить всё

[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
[Guid(QuickSwapSettingsExtensionPackage.PackageGuidString)]
[ProvideMenuResource("Menus.ctmenu", 1)]
[ProvideAutoLoad(UIContextGuid, PackageAutoLoadFlags.BackgroundLoad)]
[ProvideUIContextRule(UIContextGuid,
name: "Apply only to JSON files",
expression: "DotConfig",
termNames: new[] { "DotConfig" },
termValues: new[] { "HierSingleSelectionName:.config$" })]
public sealed class QuickSwapSettingsExtensionPackage : AsyncPackage
{
/// 
/// QuickSwapSettingsExtensionPackage GUID string.
/// 
public const string PackageGuidString = "d6069cfa-a050-490c-bf8a-5ddb780e204d";

public const string UIContextGuid = "2cfcc18c-f6b5-418a-8531-2b8f3bf53cf5";

...
}
в файле VSCT мои кнопки определены как:

Код: Выделить всё











DynamicVisibility

Invoke SwapSettingsCommand







Я также добавил раздел для ограничений видимости: а также добавлен символ ГИЛЬДИИ: Насколько я понимаю, при такой настройке команда пункта меню должна появляться только тогда, когда я щелкаю правой кнопкой мыши файлы с расширением .config. Однако при запуске расширения, если я щелкну правой кнопкой мыши по файлу, не являющемуся конфигурацией, этот пункт меню не появится. Как только я щелкну правой кнопкой мыши по файлу .config, появится новый пункт меню, но затем он также появится для каждого другого файла, независимо от расширения.
Похоже, что этот пункт меню добавляется, как только я нажимаю на файл .config, а затем постоянно присутствует и не удаляется при нажатии на другие файлы. Чего мне не хватает? Я бы хотел, чтобы элемент контекстного меню отображался только тогда, когда выбранный элемент является элементом JSON (или его можно даже отображать, но отключать для других типов файлов, если это более простое решение).

Вернуться в «C#»