2014-01-14 5 views
2

В нашей компании мы разработали VSIX Visual Studio Extension «Custom Tool». Это расширение генерирует код C# из определенных файлов xml. Сейчас у меня есть проекты, которые производят VSIX в результате сборки.Пакет NuGet, который устанавливает VSIX

Цель: Я хотел бы также обернуть этот VSIX в пакет NuGet, что мои разработчики могут установить на свое решение. Итак, я ищу какой-то шаблон проекта или что-то в этом роде. Или даже хорошо, если есть что-то, что запускает процесс в существующем проекте (который теперь производит VSIX). Мне кажется, что в Visual Studio (2013) не найдено ни одного шаблона.

Бонусная болтовня: Если я собираюсь создать пакет NuGet для VSIX вручную, как это сделать? Я смотрю на NuGet Package Explorer. Какие файлы следует добавить и в какой иерархии каталогов? У меня есть файл VSIX (который содержит расширение.vsixmanifest, dll генератора и pkgdef). Pkgdef относится к сборке генератора, а также к закрытым языкам. Как построить пакет NuGet?

(Пример кода генератора кода в Visual Studio SDK: http://code.msdn.microsoft.com/Visual-Studio-2010-SDK-ddfe1372, см. Пример «SingleFileGenerator». Наша цель расширения очень отличается, но по архитектуре такая же: она генерирует C# из xml).

Я попытался найти проблему, но хиты говорят о самых разных сценариях, таких как тип шаблона проекта VSIX и о том, как включить пакеты NuGet в VSIX и т. Д. Для меня это не по теме. Мои требования в теории менее сложны.

+1

Это кажется немного странным. Пакеты Nuget устанавливаются в проект; VSIX установлены на Visual Studio. Тем не менее, вы, вероятно, хотите использовать vsixinstaller.exe для этого. – Jimmy

+0

Может случиться, что я ошибаюсь. Поскольку сборки exteonsion типа «Custom Tool» необходимо регистрировать с помощью regasm и, возможно, даже с gacutil, возможно, возможности установки NuGet недостаточны. Вначале у нашего проекта был установщик типа vdproj, который больше не поддерживается после VS 2010. Возможно, нам нужно разработать установщик WiX, я не хочу идти по пути InstallShield LE. –

+0

Мне все еще интересно, как я могу создать пакет NuGet, который при установке устанавливает VSIX в Visual Studio. Где и как я должен поместить файл VSIX в пакет NuGet? –

ответ

2

Некоторое время назад я создал пакет, используя VSIXCommands, который фактически выполнил эту работу. Просто обратитесь пакет VSIXCommand и изменить install.ps внутри пакета, чтобы что-то вроде:

param($installPath, $toolsPath, $package, $project) 

$id = 'yourPackageId' 
$extension = Get-InstalledVsix $id 

if(!$extension) { 
    Install-GalleryVsix $id 
} 
+0

Возможно, это может быть хорошим решением, но у меня нет проекта и время, чтобы попробовать его больше –

Смежные вопросы