Можно ли добавить меню параметров в расширение VSIX без добавления VSPackage?

У меня есть очень легкое расширение Visual Studio. В настоящее время это просто MouseProcessor и KeyboardProcessor в одном файле класса, vsixmanifest и две необходимые иконки.

Я хочу добавить для него простое меню в Инструменты > Параметры. Просто логическое значение для включения/выключения.

Это мое первое расширение, и мне пришлось немало поучиться, чтобы зайти так далеко. Каждый учебник, который я нахожу, предполагает, что я использую VSPackage, и на самом деле MSDN не дает понять, что у вас может быть расширение без него. Однако очевидно, что это не так.

Использование пакета VSPackage или, по крайней мере, создание нового проекта VSPackage, кажется, увеличивает вес проекта. Мне интересно, есть ли очень легкий способ добавить простое меню параметров в мое расширение, либо без VSPackage, либо с очень небольшой загрузкой VSPackage.

Рассматриваемый код находится на GitHub по адресу https://github.com/norachuga/MiddleClickToPeekDefinition. Он позволяет щелкнуть средней кнопкой мыши по слову, чтобы просмотреть определение, или Ctrl+щелчок средней кнопкой мыши, чтобы перейти к определению. Я хочу добавить логическую опцию меню, чтобы переворачивать их, поэтому щелчок средней кнопкой мыши — это «Перейти к определению», а Ctrl + щелчок средней кнопкой мыши — «Просмотреть определение».


person friggle    schedule 11.03.2014    source источник


Ответы (1)


Самый легкий из возможных VSPackage демонстрируется в фиксации f3e23a3 здесь. В частности, вам потребуется следующее:

  1. Класс, производный от Package, аналогичный OutputWindowPackage. Сохраните атрибут PackageRegistration, но вы можете опустить ProvideBindingPath, если ваше расширение имеет только одну сборку. Вы можете упростить зависимости, сославшись на VSSDK.Shell.12 пакет NuGet (только для расширения для Visual Studio 2013 и новее).

  2. Обновите source.extension.vsixmanifest, чтобы включить строку <VsPackage>|%CurrentProject%|</VsPackage>.

  3. Обновите файл проекта, чтобы установить <GeneratePkgDefFile>true</GeneratePkgDefFile> и <CopyBuildOutputToOutputDirectory>true</CopyBuildOutputToOutputDirectory>.

  4. Убедитесь, что файл проекта имеет <IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer> (это должно быть еще до того, как вы обновите проект).

person Sam Harwell    schedule 14.03.2014
comment
Это сработало с одним небольшим изменением. Мне пришлось пропустить шаг 3, а в свойствах проекта мне пришлось установить флажок Копировать содержимое VSIX в следующую папку и установить его в папку bin\Debug. Затем мне пришлось создать приложение один раз (чтобы заставить его скопировать его). После этого я мог установить для GeneratePkgDefFile значение true и выполнить сборку без ошибок. - person friggle; 17.03.2014