使用NuGet Package Explorer工具发布具有多个VSIX的Nuget包

时间:2013-11-16 19:21:57

标签: visual-studio nuget nuget-package

我有一些VSIX用于我的产品,我想将其作为Single Nuget包分发。我只希望将3个独立的Visual Studio 2013软件包分发到VS 2013 IDE(不会在早期版本的VS中运行)。

我已经在Nuget注册了,我已经下载了NuGet Package Explorer,我在其中输入了我的包的所有元数据。

我在我的包内容中添加了一个名为VSIX的VSIX文件夹,并添加了我的三个VSIX扩展。

我发布了这个包,虽然我能够从Visual Studio中搜索并运行我的NuGet包,但它似乎没有运行VSIX扩展。

我注意到当我点击NuGet Package Explorer中的任何一个vsix文件时,它会说 *不支持此文件的格式。 *

如何通过Nuget包部署我的扩展程序?

任何帮助都会很棒!

干杯

1 个答案:

答案 0 :(得分:1)

您需要将VSIX文件放入'工具'你的包裹的文件夹。然后你必须创建init.ps1或install.ps1来启动vsix的安装过程。 请注意,解决方案范围广的软件包'不会调用install.ps1。 (即没有内容或lib文件夹的包)。因此,如果您的软件包只包含'工具'文件夹你必须将安装逻辑放入init.ps1。但是每次在VS中打开解决方案时都会调用init.ps1。 这是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