Развернуть сборку, содержащую IWizard для шаблона проекта с VSIX

Я создал расширение для VS 2010, которое развертывает шаблон проекта. Шаблон проекта использует настраиваемый мастер (в конкретной сборке), который вызывается при создании нового проекта на основе этого шаблона.

Я хочу упаковать сборку, содержащую мастер, в VSIX, чтобы он был развернут в том месте, где его может найти шаблон (я знаю, что GAC не подходит для VSIX).

В основном, если я разверну сборку в GAC, установлю VSIX, а затем создаю проект, мастер запускается успешно. Если я сделаю то же самое, не развернув сначала сборку, шаблоны проекта не найдут сборку при создании проекта.

Мой вопрос: как развернуть шаблон проекта и нужную сборку с помощью пакета VSIX?

Спасибо за помощь

РЕДАКТИРОВАТЬ: Я изменил подпуть VSIX ссылки сборки мастера на "ProjectTemplates" в проекте установки и соответственно обновил ссылку сборки содержимого vsixmanifest. Кажется, сейчас работает.

3 ответа

Решение

Вам не нужно получать свою сборку, содержащую реализацию IWizard в GAC. Вы можете просто объявить его в своем файле extension.vsixmanifest как элемент Assembly в разделе Content.

К сожалению, это нигде не документировано.

Единственная сложная задача - убедиться, что атрибут AssemblyName имеет правильное значение.

Мне не повезло с техникой элементов Assembly, чтобы работать, поэтому, если кто-то столкнется с той же проблемой, вот другое решение.

Visual Studio ищет DLL-библиотеки мастера, используя раздел реестра BindingPaths. Если вы добавите папку, содержащую вашу DLL, в подраздел BindingPaths, Visual Studio найдет вашу DLL.

Чтобы сделать это из VSIX, создайте файл.pkgdef в своем проекте VSIX. Установите для его свойства Include in VSIX значение True и вставьте в него следующий текст:

[$RootKey$\BindingPaths\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}]
"$PackageFolder$"=""

(где X представляют GUID пакета, хотя я подозреваю, что подойдет любой GUID).

Это работает для меня:

[$RootKey$\BindingPaths\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}]
"$PackageFolder$"=""

Но элемент сборки не работает.

Другие вопросы по тегам