簡體   English   中英

使用MEF和VSIX創建Visual Studio項目系統

[英]Creating Visual Studio project system with MEF and VSIX

我正在尋找為Visual Studio創建自定義項目系統。 但網上的一些資料讓我有些困惑。 它們都是指VSPackages,據我所知,這些與VSIX完全不同。 我現有的擴展功能是通過VSIX提供的。 通過VSIX提供新的項目類型是不可能的嗎?

我也查看了他們的示例代碼,這是一些可怕的 COM內容。 有沒有新的閃亮的MEF項目,比如擴展編輯器的語法高亮和東西?

沒有MEF支持/ API來實現對新項目系統的支持。 您可以通過兩種方式實施支持。

  1. 直接實現Visual Studio API。 此選項非常復雜,但不限制您使用特定的構建系統或文件格式。 如果你選擇這個,你基本上是靠自己。
  2. 使用托管包框架(MPF)庫作為起點。 只要您限制使用MSBuild作為項目格式和構建系統,此選項就容易多了。

我假設你選擇#2。

MPF庫曾經是Visual Studio SDK的一部分,但最終在Visual Studio 2010發布時轉移到CodePlex。 這篇文章將重點放在我在GitHub上修改和發布的這個庫的一個版本,而不是使用那個。 此版本的庫與其他先前版本相比具有許多優勢,其中一些版本在自述文件中有記錄,當您按照此鏈接顯示時。

Visual Studio 2010的托管包框架

要實現對您的語言的支持,您需要執行以下操作。

  1. 實現命令行MSBuild支持您的語言。

    • 創建項目文件。
    • 創建一個或多個用您的語言構建項目所需的MSBuild *.targets
    • 這可能涉及創建一個程序集來保存自定義構建任務。
  2. 創建VSPackage以在IDE中實現對MSBuild項目的支持。 這將允許Visual Studio使用您選擇的擴展名打開/保存/關閉項目文件。

  3. 創建一個或多個“項目模板”,以允許用戶在IDE中為您的語言創建新項目。

  4. 創建一個或多個“項目項模板”,以允許用戶輕松地將文件添加到項目中。

這個答案現在只是略微浮出水面,但你提出了一個非常廣泛的問題,不幸的是我現在沒時間詳細討論這方面的所有方面。

編輯:關於部署 - 您可以並且應該在VSIX中包含您的VSPackage。 但是,由於您的擴展需要在用戶項目具有標准訪問權限的位置( C:\\Program Files\\MSBuildC:\\Program Files (x86)\\MSBuild )安裝MSBuild擴展,因此您必須將整個擴展包裝起來安裝程序中提供自定義安裝的東西。 我建議使用WiX; 它不是微不足道的,但它是免費的,工作異常可靠,並且一旦掌握它就不會太難以使用。

不幸的是,Visual Studio API真的很難看。 如果要與Visual Studio的內部機制進行深度集成,則必須使用“ hideous COM ”。 直接或通過托管包裝器(Interop Assemblies)。 為了避免混淆,我嘗試解釋Visual Studio Extensibility的概念並發布有用的文檔鏈接。 希望它會對你有所幫助。

您可以使用宏,加載項,VSPackage和托管擴展性框架(MEF)擴展來擴展Visual Studio。 與Visual Studio 2012開始,Visual Studio的擴展不再支持宏! 但是,使用VSPackages可提供更多機會。 有關詳細信息,請參閱

從Visual Studio 2010開始,您可以使用MEF僅自定義Visual Studio編輯器。 但是,您可以將MEF擴展與VSPackage結合使用。 怎么做你可以閱讀以下鏈接。

在我看來,使用MEF具有很小的優勢。

要為Visual Studio創建自定義項目類型,您應該使用Visual Studio模板 這是與VSPackage和另一種擴展方法分開的技術。 它允許Visual Studio支持新類型的項目並添加新項目向導。

要分發程序包,您可以使用VSIX或MSI文件。 其中任何一個都可以包含VSPackage,Visual Studio模板,依賴庫,圖標,配置文件等.VSIX和MSI安裝程序支持visualstudiogallery門戶。 但是,Visual Studio只能從visualstudiogallery中自動更新VSIX文件。

默認情況下,VSIX(作為部署包)和VSPackage(作為插件的起點)位於同一個項目中,但您可以分為不同的項目或使用msi而不是vsix。

暫無
暫無

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

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