2013-07-07 103 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太)

相關問題