【问题标题】:How to add nuget packages and run custom project wizard?如何添加 nuget 包并运行自定义项目向导?
【发布时间】:2013-07-04 17:28:00
【问题描述】:

我构建了自己的项目模板。使用模板创建项目时,会启动一个自定义向导,允许用户编辑创建的项目。

问题是我还需要在创建的项目中添加一些非常简单的 nuget 包(只是 mvvmlight、MyToolkit 和其他 1 个)。为此,我使用正确的包向我的 vstemplate 添加了一个WizardData 元素。

问题来了:为了启动我的自定义向导,我需要在WizardExtension 元素中添加对我的向导的引用。但是为了自动安装 nuget 包,我需要在我的 WizardExtension 元素中放置对 NuGet.VisualStudio.TemplateWizard 的引用,并且 WizardExtension 只能具有它将实例化的 one 类,但我有 2 个需要运行。

那么我该如何解决呢?

这是启动我自己的向导的代码。现在我也只需要安装 NuGet 包:

<WizardExtension>
    <Assembly>PartyTemplateWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=7eb2f41084fd4cd5</Assembly>
    <FullClassName>PartyTemplateWizard.Wizard</FullClassName>
</WizardExtension>
<WizardData>
    <packages repository="template">
        <package id="MvvmLight" version="4.1.27.0" />
        <package id="MvvmLightLibs" version="4.1.27.0" />
        <package id="MyToolkit" version="1.14.0" />
        <package id="linqtotwitter" version="2.1.06" />
    </packages>
</WizardData>

有人有解决办法吗?

【问题讨论】:

  • 您是否尝试过从命令行运行 NuGet? (nuget.exe)
  • 通过自定义项目向导以编程方式?
  • 寻找相同的答案(但在解决方案与模板级别上)。调查我是否可以拥有自己的向导,可能会调用 Nuget 向导的功能。不知道如何。

标签: visual-studio visual-studio-2012 setup-project wizard


【解决方案1】:

好吧,我遇到了同样的问题,很失望地找不到这篇文章的答案。现在我得到了答案,我正在发布它。

不能有两个向导扩展。因此,您需要从自定义向导(见下文)实例化 NuGet,并将所有方法委托给该实例。

将这些行添加到RunStarted 方法中:

Assembly asm = Assembly.Load("NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a");
wizard = (IWizard)asm.CreateInstance("NuGet.VisualStudio.TemplateWizard");

并且,像这样调用实例上的方法:

wizard.RunStarted(automationObject, replacementsDictionary, runKind, customParams);

在所有方法中类似的方式委托给向导实例。

【讨论】:

    【解决方案2】:

    您可以添加多个WizardExtension 元素(每个程序集引用一个),而不是尝试将多个引用放在一个WizardExtension 元素中。

    例如:

    <WizardExtension>
      <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
      <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
    </WizardExtension>
    
    <WizardExtension>
      <Assembly>PartyTemplateWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=7eb2f41084fd4cd5</Assembly>
      <FullClassName>PartyTemplateWizard.Wizard</FullClassName>
    </WizardExtension>
    
    <WizardData>
      <packages repository="extension" repositoryId="your-extension-id-here">
        <package id="MvvmLight" version="4.1.27.0" />
        <package id="MvvmLightLibs" version="4.1.27.0" />
        <package id="MyToolkit" version="1.14.0" />
        <package id="linqtotwitter" version="2.1.06" />
      </packages>
    </WizardData>
    

    参考文献:

    免责声明: 我仅在 Visual-Studio-2015 上进行了测试;不在 Visual-Studio-2012 上(尽管快速浏览这个 link 上的答案似乎表明它在 VS2012 上也受支持)

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多