Публикация пакетов Nuget с несколькими VSIX с помощью инструмента обозревателя пакетов NuGet

У меня есть несколько VSIX для моего продукта, который я хотел бы распространять как единый пакет Nuget. Есть 3 отдельных пакета Visual Studio 2013, которые я хочу распространять только в IDE VS 2013 (не будет работать в более ранних версиях VS).

Я зарегистрировался в Nuget и загрузил обозреватель пакетов NuGet, где я ввел все метаданные для своего пакета.

Я добавил папку VSIX в содержимое своего пакета с именем VSIX и добавил три расширения VSIX.

Я опубликовал пакет, и хотя я могу искать и запускать свой пакет NuGet из Visual Studio, похоже, он не запускает расширения VSIX.

Я заметил, что когда я нажимаю на любой из моих файлов vsix в обозревателе пакетов NuGet, он говорит, что * Формат этого файла не поддерживается. *

Как мне развернуть свои расширения с помощью пакетов Nuget?

Любая помощь будет потрясающей!

Ваше здоровье


person user1333524    schedule 16.11.2013    source источник


Ответы (1)


Вам нужно поместить VSIX-файлы в папку «tools» вашего пакета. Затем вам нужно создать init.ps1 или install.ps1, чтобы запустить процесс установки vsix. Обратите внимание, что install.ps1 не будет вызываться для «пакетов решения» (т. е. пакетов, у которых нет содержимого или папки lib). Поэтому, если в вашем пакете есть только папка «tools», вам придется поместить логику установки в init.ps1. Но init.ps1 будет вызываться каждый раз, когда вы открываете свое решение в VS. Это критическое изменение, внесенное командой NuGet в NuGet 2.6 или 2.7 (точно не помню). Так что теперь помещать установочный логин в init.ps1 больше не очень хорошая идея :(

Скрипт установки может выглядеть так:

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

if (-not $toolsPath) { throw "toolsPath parameter wasn't specified" }

if ($dte.Version -eq "10.0") {
    $vsixFileName = "MyExtensiion.vs2010.vsix"
} elseif ($dte.Version -eq "11.0") {
    $vsixFileName = "MyExtensiion.vs2012.vsix"
} else {
    $vsixFileName = "MyExtensiion.vs2013.vsix"
}

$vsxInstaller = [System.IO.Path]::Combine($toolsPath, $vsixFileName)
Start-Process -FilePath $vsxInstaller 
person Shrike    schedule 27.03.2014