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 次 |
| 最近记录: |