簡體   English   中英

帶有VSIX Installer和Nuget包的Visual Studio 2012的多項目/解決方案模板

[英]Multi Project / Solution Templates for Visual Studio 2012 with VSIX Installer and Nuget Packages

我想有一個多項目模板,它將創建子項目,並將安裝nuget依賴項以及安裝此模板的vsix安裝程序。

方法問題已經嘗試過

沒有VSIX的多項目模板,沒有nuget

我能夠創建一個多項目模板,它工作正常,除非是時候包括nuget引用,它不起作用。 對於沒有涉及VSIX的nuget,沒有簡單/優雅的支持。

具有VSIX的多項目模板,沒有根模板

所以我嘗試使用VSIX,看起來非常簡單。 將模板項目添加為zip或解決方案,構建vsix安裝程序。 但是當我添加第二個項目模板,創建一個多項目模板,構建它,安裝模板並嘗試創建一個項目時,我意識到它不支持master-sub項目設置,其中一個主項目創建子項目。 這是一個很大的問題,因為開發人員必須按依賴順序創建每個項目。

我終於讓設置工作了。 我花了很多天的時間嘗試和修補不同的MSDN文章和博客來解決這個問題。

結合多項目模板(與根模板)和VSIX

最終的結果是

  • Visual Studio 2012 VSIX項目,它包含具有所有nuget依賴項的packages文件夾。
  • 帶有根/主模板的Zip文件,它將多個項目鏈接在一起,這些項目也位於相應文件夾的zip文件中。
  • 一個內置的vsix安裝程序,它將安裝一個包含子項目的項目模板。
  • 這將允許您使用文件 - 導出模板功能從項目中維護模板,該模板可以輕松地繼續增長。
  • 使用自動生成和可自定義的參數重命名模板名稱空間和文件以匹配新項目名稱。

使用此模板創建項目時,它會自動創建多個子項目,但子項目不是(但可以)作為新項目菜單中的模板。 如果您嘗試模擬依賴於許多項目一起工作的企業設計,但是您不希望用戶能夠創建這些子項目,或者您希望它們可以在不同的項目中使用,那么這非常有用。項目模板區域/類別。

腳步:

  1. 創建一個文件夾“MyTemplate”
  2. 創建一個root.vstemplate文件
  3. 將以下內容添加到文件中:

     <WizardExtension> <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly> <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName> </WizardExtension> <WizardData> <packages repository="extension" repositoryId="fill this in"> <package id="Newtonsoft.Json" version="5.0.6" /> </packages> </WizardData> 
  4. 打開您希望用作“子項目”模板的第一個項目,從文件 - >導出模板導出模板。

  5. 將zip內容解壓縮到MyTemplate文件夾,最終得到MyTemplate / Project1
  6. 從剛提取的內容中打開Project1.vstemplate。
  7. 並在下面的TemplateContent塊中粘貼(例如,如果你想添加一個Json nuget包)

     <WizardExtension> <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly> <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName> </WizardExtension> <WizardData> <packages repository="extension" repositoryId="fill this in"> <package id="Newtonsoft.Json" version="5.0.6" /> </packages> </WizardData> 
  8. 壓縮整個根文件夾MyTemplate,最終得到MyTemplate.zip,其中包含MyTemplate文件夾的內容。

  9. 從C#下的可擴展性模板類別創建一個VSIX項目(您需要Visual Studio 2012 SDK才能擁有此模板)。
  10. 創建一個包文件夾
  11. 將您在子項目vstemplate中引用的nuget包(僅限.nupkg文件)添加到packages文件夾和files屬性中,將其構建操作設置為content,並將VSIX中包含為true。 在我的情況下,我添加了Newtonsoft.Json.5.0.6.nupkg。
  12. 在source.extension.vsixmanifest中設置作者名稱
  13. 在Assets選項卡中,單擊new並從下拉列表中選擇項目模板,然后在下一個下拉列表中文件系統上的文件。
  14. 瀏覽並選擇您創建的zip,點擊確定。 這將創建一個帶有zip的ProjectTemplates文件夾。
  15. 從source.extension.vsixmanifest的頂部復制Product Id。
  16. 使用像WinRar這樣的程序打開zip,允許您直接將更改保存到zip(默認的Windows zip應用程序不允許這樣做)。
  17. 將Product id粘貼到repositoryid部分
  18. 將更改保存到zip文件(確保你回到WinRar,如果你正在使用它,因為它會檢測到更改,並會詢問你是否要更新)
  19. 構建解決方案並轉到bin / debug文件夾以運行vsix安裝程序
  20. 創建您的項目

可選步驟讓您的主項目重命名您的文件和名稱空間

  • 打開每個子項目vstemplate文件,並將$ safeprojectname $添加到DefaultName元素。 例如
<DefaultName>$safeprojectname$.Domain</DefaultName>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM