【问题标题】:Publishing Nuget Packages with multiple VSIX using NuGet Package Explorer Tool使用 NuGet 包资源管理器工具发布具有多个 VSIX 的 Nuget 包
【发布时间】:2014-03-27 18:33:40
【问题描述】:

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

我已经在 Nuget 上注册并下载了 NuGet 包资源管理器,我在其中输入了我的包的所有元数据。

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

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

我注意到,当我在 NuGet 包资源管理器中单击任何 vsix 文件时,它会显示 * 不支持此文件的格式。 *

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

任何帮助都会很棒!

干杯

【问题讨论】:

    标签: visual-studio nuget nuget-package


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多