2013-07-07 41 views
15

我建立了我自己的项目模板。当使用模板创建项目时,将启动一个自定义向导,允许用户编辑创建的项目。如何添加nuget包并运行自定义项目向导?

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

问题出在这里:为了启动我的自定义向导,我需要在WizardExtension元素内引用我的向导。但为了自动安装nuget包,我需要在我的WizardExtension元素内部放置一个指向NuGet.VisualStudio.TemplateWizard的引用,而WizardExtension只能有一个类,它将实例化,但我有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> 

有没有人有解决方案?

+0

您是否尝试过在命令行中运行的NuGet? (nuget.exe) – Sebazzz

+0

从编程的自定义项目向导? –

+0

寻找相同的答案(但在解决方案vstemplate上)。看看我是否可以拥有自己的向导,可以调用Nuget向导的函数。不知道如何。 –

回答

10

那么,我遇到了同样的问题,并失望地发现这个职位没有答案。现在我已经得到了答案,并发布了它。

不能有两个向导扩展。所以你需要从你的自定义向导中实例化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); 

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

1

而不是尝试在一个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> 

参考文献:

免责声明:我已经在视觉工作室2015年测试了这个唯一的;没有视觉工作室,2012(虽然咋一看通过回答这个link似乎表明它支持VS2012太)

相关问题