使用Nuget软件包资源管理器工具发布具有多个VSIX的Nuget软件包



我的一个产品有很多VSIX,我想作为单个Nuget包分发。有3个独立的Visual Studio 2013包,我只想分发给VS 2013 IDE(不会在VS的早期版本中运行)。

我已经在Nuget上注册,并下载了Nuget软件包浏览器,在那里我输入了我的软件包的所有元数据。

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

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

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

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

任何帮助都会很棒!

干杯

您需要将VSIX文件放入包的"tools"文件夹中。然后,您必须创建init.ps1或install.ps1来启动vsix的安装过程。请注意,对于"解决方案范围的软件包"(即没有内容或lib文件夹的软件包),不会调用install.ps1。因此,如果您的包只有"tools"文件夹,则必须将安装逻辑放入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 

最新更新