Как развернуть «метод расширения» внутри расширения VSIX? - PullRequest
0 голосов
/ 28 октября 2018

Из-за формулировок (многие значения "расширение" и "метод") я совершенно не могу найти любую информацию о моем вопросе на веб-страницах.Поэтому я спрашиваю здесь:

Можно ли развернуть "методы расширения" с расширением VSIX?

Пояснение: под "методом расширения" я имею в виду что-то вроде

public static string SomextExtension(this string s, string p) {
   retrun s + p;
}

Под расширением VSIX я ссылаюсь на пользовательское расширение, которое устанавливается через

SomeCoolExtension.vsix

Цель: пользователь устанавливает VSIX, получаетнемного функций (в основном это собственные генераторы кода в моем случае) и дополнительно имеет доступ к "Hello".SomeExtension(" World"); в их исходном коде.

Я постепенно думаю, что это просто невозможно, поскольку я перепробовал все, что мог придуматьи, как говорилось в начале, практически невозможно найти его в googls.

Если это действительно невозможно, я, по крайней мере, хотел бы понять, почему.Так что простое «нет» может быть правильным ответом, но если бы вы могли уточнить, это успокоило бы мою программистскую душу: -)

Спецификации: я использую VS2017 и новый «Visual Studio AsyncPackage»,но если вы знаете ответ для более старой версии, я с радостью попробую их.

1 Ответ

0 голосов
/ 28 октября 2018

Вы можете использовать оба подхода:

  • Расширение (.vsix) обеспечивает наибольшую гибкость, поскольку оно может предоставлять команды (кнопки в меню, контекстные меню и панели инструментов), которые напо требованию пользователя может 1) Вставить код в активный документ 2) Добавить файлы с кодом или другими активами 3) Добавить ссылки на Dll, которые расширение может развернуть в исходной папке проекта и т. д. Кроме того, он может делать всечто не только по требованию, но и автоматически наблюдая за событиями и проверяя, выполнены ли некоторые условия, например, создано ли решение, или оно загружено, добавлен проект, в нем уже есть файл кода или нет, в нем уже есть ссылкаили нет и т. д. Излишне говорить, что вся эта гибкость проистекает из некоторой сложности.

  • Пакет NuGet может добавлять библиотеки DLL к ссылкам или кодировать файлы в проект, он может выполнять PowerShellскрипт, когда пакет NuGet добавляется в проект, который может изменить проект, он может изменить процесс сборки, добавив новый MSBuild цели / задачи (являющийся пакетом NuGet для Microsoft.VSSDK.BuildTools для создания расширения VSIX в качестве основного примера).Это однократная операция при установке в проекте.После этого нет событий, команд и т. Д., Но для большинства сценариев все гораздо проще.

...