Регистрация распакованного расширения VSIX через MSI без использования devenv / setup

У нас есть расширение Visual Studio, которое в настоящее время установлено вместе с MSI, поскольку после установки нам нужно выполнять определенные задачи (ngen, регистрация определенных COM-серверов и т. Д.). В конце установки запускаемdevenv.exe /setup (более конкретно,devenv.exe /setup /nosetupvstemplates чтобы сделать это немного быстрее) зарегистрировать расширение в Visual Studio 2012 и выше (в 2010 году этот шаг не требовался, поскольку VS2010 будет перестраивать кэш расширений при каждом запуске).

В настоящее время мы стремимся перейти к частичной установке VSIX, но есть определенные проблемы:

У нас есть определенная структура папок (дополнительные инструменты в комплекте). Я не смог найти вариант для включения произвольных папок и файлов в пакет VSIX. Это возможно?

Мы пытаемся избежать использованияdevenv.exe /setup, так как в редких случаях это может привести к тому, что расширения не будут загружаться (как описано Remco Mulder наФорумы MSDN).

Нам по-прежнему необходимо выполнять операции «после установки», которые в настоящее время невозможны в VSIX.

Из-за предыдущих «грехов», мы жестко закодировали некоторые пути использованияCompanyName\ProductName\Version форматировать пакеты VSIXиспользовал к следуйте, но похоже, что VSIX randomy теперь генерирует имя папки (как упоминает Джейсон в своем ответе ниже).

Поэтому мне бы очень хотелось иметь возможность установить «распакованный» пакет VSIX - пусть установщик MSI создаст файловую структуру на диске (в правильном месте,%VSInstallDir%\Common7\IDE\Extensions\Company\Product\Version), а затем каким-то образом VSIX потреблять.vsixmanifest файл для регистрации расширения в Visual Studio.

(Первоначальное копание в Extension Manager API показывает, что есть метод, называемыйCreateInstalledExtension вExtensionManagerService который берет путь к vsixmanifest, в сборкеMicrosoft.VisualStudio.ExtensionManager.Implementation.dll, но к сожалению это внутреннее).

Таким образом, не прибегая к хакерским API, есть ли альтернативный способ по существу установить расширение в Visual Studio (2012 и выше), не используяdevenv /setup?

Ответы на вопрос(4)

Ваш ответ на вопрос