如何添加nuget包并运行自定义项目向导?

Leo*_*ens 15 wizard setup-project visual-studio visual-studio-2012

我建立了自己的项目模板.使用模板创建项目时,将启动自定义向导,允许用户编辑已创建的项目.

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

问题出现了:为了启动我的自定义向导,我需要在WizardExtension元素内部引用我的向导.但是为了自动安装nuget包,我需要NuGet.VisualStudio.TemplateWizard在我的WizardExtension元素中放置一个引用,并且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>
Run Code Online (Sandbox Code Playgroud)

有没有人有办法解决吗?

小智 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");
Run Code Online (Sandbox Code Playgroud)

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

wizard.RunStarted(automationObject, replacementsDictionary, runKind, customParams);
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

1796 次

最近记录:

8 年,7 月 前