Как создать одно расширение VSIX для нескольких версий Visual Studio? - PullRequest
0 голосов
/ 28 августа 2018

Необходимо создать общие расширения VSIX, которые должны поддерживать все версии Visual Studio (с 2010 по 2017).

Я сослался на ссылку ниже, чтобы выполнить вышеуказанное требование.

https://msdn.microsoft.com/en-us/magazine/mt493251.aspx

В этом они сказали добавить пакет (перейдите к узлу Visual Studio C # Items | Extensibility | VSPackage, выберите шаблон пакета Visual Studio и назовите его MyPackage.cs) в проект VSIX с помощью шаблона пакета Visual Studio. в проекте VSIX, но моя визуальная студия не имела шаблона элемента пакета Visual Studio. Он имеет только шаблон Visual Studio AsyncPackage. Я добавил свои визуальные детали студии ниже.

enter image description here

В старой версии Visual Studio есть только опция «Пакет Visual Studio», а также предлагается использовать AsyncPackage сейчас, чтобы создать общий пакет для нескольких версий Visual Studio. Пожалуйста, найдите эту информацию здесь.

https://developercommunity.visualstudio.com/content/problem/293478/visual-studio-package-template-not-available-on-sd.html

Если я добавил Visual Studio AsyncPackage в проект VSIX, то выполнил следующую процедуру, которая сталкивается с ошибкой ниже при компиляции проекта VSIX.

enter image description here

Пожалуйста, предложите любое решение, чтобы решить это, или любезно предложите любой другой способ выполнить мое требование.

Примечание. Я создал проект с VS2012 с поддерживаемыми версиями Visual Studio в файле vsixmanifest. Работает только в VS2012, установлена ​​машина в одиночку. Пожалуйста, сообщите об этом.

1 Ответ

0 голосов
/ 29 августа 2018

Я автор статьи в MSDN Magazine. Он был написан до того, как шаблон проекта пакета Visual Studio был заменен шаблоном проекта пакета Visual Studio Async.

Даже если вы можете получить шаблон (из старой версии VS), невозможно выполнить таргетинг от VS 2010 до VS 2017 с одной VSIX из-за трех разных версий манифеста, как описано в статье. , Максимум, вы можете выбрать таргетинг с VS 2012 до VS 2017.

Но, учитывая стремление Microsoft использовать асинхронные пакеты (по крайней мере, для пакетов с автоматической загрузкой) в VS 2017 15.8 и будущих VS 2019 16.0 и 16.1 (см. Улучшение реагирования критических сценариев путем обновления поведения автоматической загрузки расширений ) лучший подход, ориентированный на будущее, - это разработка не асинхронного пакета для VS 2010-2013 и другого асинхронного пакета для VS 2015-2017. Потому что, возможно, ваш пакет сегодня не требует автозагрузки (асинхронный пакет не требуется), но, возможно, в будущем он потребует автозагрузки (и тогда вы будете вынуждены выполнять асинхронный пакет), или, возможно, Microsoft решит в VS 2019 16.2, что даже не пакеты -autoload тоже должны быть асинхронными ...

Примечание: вы можете попробовать даже асинхронный пакет на VS 2013 и выше с примером Visual Studio 2013 обратно совместимый асинхронный пакет , но это не стоит, если вам нужно ориентироваться также на VS 2010 и 2012.

Итог: сконцентрируйте свое время на повторном использовании как можно большего количества кода между двумя пакетными проектами, которые вы должны создать для нацеливания на VS 2010-2019.

...