共用方式為


VSIX 擴充功能 2.0 結構描述參考

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

VSIX 部署資訊清單檔描述 VSIX 套件的內容。 檔案格式是結構描述所決定。 此結構描述的 2.0 版支援加入自訂型別和屬性。 資訊清單的結構描述是可延伸。 資訊清單的載入器會忽略它並不了解的 XML 元素和屬性。

重要

Visual Studio 2015 可以載入 Visual Studio 2010、 Visual Studio 2012 或 Visual Studio 2013 格式的 VSIX 檔案。

封裝資訊清單結構描述

資訊清單 XML 檔案的根項目是<PackageManifest>,具有單一屬性Version,這是資訊清單的格式版本。 如果格式進行重大變更,將會變更的版本格式。 本主題說明的資訊清單的格式版本 2.0 中,設定來指定資訊清單中Version屬性值版本 ="2.0"。

PackageManifest 項目

<PackageManifest>根項目,您可以使用下列項目︰

  • <Metadata>中繼資料以及廣告資訊封裝本身。 只有一個Metadata允許資訊清單中的項目。

  • <Installation>-這個區段會定義這個擴充套件可以安裝,包括應用程式可以安裝中的 Sku 的方式。 只有一個Installation允許資訊清單中的項目。 資訊清單必須Installation項目或此封裝將不會安裝到任何 SKU。

  • <Dependencies>-此處會定義此套件相依性選用清單。

  • <Assets>-這個區段包含所有包含此套件中的資產。 本節中,沒有此封裝將不會出現任何內容。

  • <AnyElement>*為資訊清單結構描述是具備足夠的彈性,以允許任何其他項目。 資訊清單的載入器無法辨識的任何子項目會公開在擴充管理員 API 中,作為額外的 XmlElement 物件。 使用這些子元素,VSIX 擴充功能可以在 Visual Studio 中執行的程式碼可以在執行階段存取的資訊清單檔案中定義其他資料。 請參閱AdditionalElementsLocalizedAdditionalElements

中繼資料元素

此區段是封裝、 其識別,以及廣告資訊的相關中繼資料。 <Metadata>包含下列元素︰

  • <Identity>-這會定義此套件的識別資訊,並包含下列屬性︰

    • Id– 此屬性必須是封裝作者所選擇的唯一識別碼。 名稱應該限定的相同方式 CLR 型別命名空間︰ Company.Product.Feature.Name。 Id屬性僅限於 100 個字元。

    • Version-這會定義此封裝及其內容的版本。 這個屬性會遵循 CLR 組件版本控制格式︰ Major.Minor.Build.Revision (1.2.40308.00)。 具有較高的版本號碼的封裝會被視為更新套件,並覆蓋現有安裝的版本可以安裝。

    • Language– 此屬性為預設的語言套件,並對應到此資訊清單中的文字資料。 這個屬性會遵循 CLR 的地區設定的程式碼慣例資源組件,例如︰ en-us-我們,en,若為 fr-fr。 您可以指定neutral宣告會執行在任何版本的 Visual Studio 的中性語言擴充功能。 預設值是 neutral

    • Publisher– 此屬性會識別 「 發行者 」 的這個封裝,公司或個別的名稱。 Publisher屬性僅限於 100 個字元。

  • <DisplayName>-此項目會指定擴充管理員 UI 中顯示的使用者易記的封裝名稱。 DisplayName內容僅限於 100 個字元。

  • <Description>-此選擇性項目是在擴充管理員 UI 中顯示的封裝和其內容的簡短描述。 Description內容可以包含任何文字,但它有限制為 1000年個字元。

  • <MoreInfo>-此選擇性項目是網頁的 URL 連線,其中包含此套件的完整描述。 必須指定通訊協定為 http。

  • <License>-此選擇性項目是包含在封裝中的授權檔案 (.txt、.rtf) 的相對路徑。

  • <ReleaseNotes>-此選擇性項目是相對路徑 (.txt、.rtf) 的封裝,否則會顯示版本資訊的網站的 URL 中包含版本資訊檔案。

  • <Icon>-此選擇性項目是包含在封裝中的映像檔案 (png、 bmp、 jpeg、 ico) 的相對路徑。 圖示影像應該是 32 x 32 像素 (或將會壓縮該大小),並出現在清單檢視 UI。 如果沒有Icon指定項目時,UI 會使用預設值。

  • <PreviewImage>-此選擇性項目是包含在封裝中的映像檔案 (png、 bmp、 jpeg) 的相對路徑。 預覽影像應為 200 x 200 像素為單位,並顯示在 UI 的詳細資料。 如果沒有PreviewImage指定項目時,UI 會使用預設值。

  • <Tags>-此選擇性項目會列出其他以分號分隔的文字標籤,以供搜尋提示。 Tags項目是限制為 100 個字元。

  • <GettingStartedGuide>-此選擇性項目是 HTML 檔案的相對路徑,或是包含如何使用擴充功能或此套件中的內容的相關資訊的網站的 URL。 本指南就會啟動為安裝的一部分。

  • <AnyElement>*為資訊清單結構描述是具備足夠的彈性,以允許任何其他項目。 資訊清單的載入器無法辨識任何子項目都會公開為一份 XmlElement 物件。 使用這些子元素,VSIX 擴充功能可以在資訊清單檔案中定義其他資料,並列舉它們在執行階段。

安裝項目

這個區段會定義可以安裝此套件的方式,可以將它安裝到應用程式 Sku。 本節包含下列屬性︰

  • Experimental– 設定此屬性為 true,如果您沒有為所有使用者,目前已安裝的擴充功能,但是您正在開發的同一部電腦上的更新的版本。 例如,如果您已安裝 MyExtension 1.0 的所有使用者,但您想要在同一部電腦上偵錯 MyExtension 2.0,將實驗性質 ="true"。 這個屬性是可在 Visual Studio 2015 Update 1 及更新版本。

  • Scope– 這個屬性可以接受 「 全域 」 或 「 ProductExtension 」 的值︰

    • 「 全域 」 指定安裝不會限制特定 SKU。 比方說,在安裝擴充功能 SDK 時,會使用此值。

    • 「 ProductExtension 」 指定已安裝的傳統 VSIX 擴充功能 (1.0 版) 範圍設定為個別的 Visual Studio Sku。 此為預設值。

  • AllUsers– 這個選擇性屬性會指定是否會針對所有使用者安裝此套件。 根據預設,此屬性為 false,表示封裝是每位使用者。 (當您設定此值為 true 時,安裝的使用者必須提高為系統管理特殊權限來安裝產生的 VSIX。

  • InstalledByMsi– 這個選擇性屬性會指定此套件是否已安裝 MSI。 安裝 MSI 封裝安裝和管理和未由 Visual Studio 擴充功能管理員 MSI (程式和功能)。 根據預設,此屬性為 false,以指定的封裝不會安裝 MSI。

  • SystemComponent– 這個選擇性屬性會指定此套件是否應該視為系統元件。 系統元件不會顯示在 [擴充管理員 UI,而且無法更新。 根據預設,此屬性為 false,表示封裝不是系統元件。

  • AnyAttribute*Installation項目接受屬性會公開在做為名稱 / 值組字典的執行階段的開放集合。

  • <InstallationTarget>– 這個項目控制 VSIX 安裝程式會安裝套件的位置。 如果值Scope屬性是 「 ProductExtension 」 封裝必須為目標 SKU 中已安裝的資訊清單檔做為其內容以公告擴充功能的一部分。 <InstallationTarget>項目具有下列屬性時Scope屬性具有明確或預設值"ProductExtension":

    • Id– 此屬性會識別封裝。 屬性會遵循命名空間慣例︰ Company.Product.Feature.Name。 Id屬性只能包含英數字元,並限制為 100 個字元。 預期的值︰

      • Microsoft.VisualStudio.IntegratedShell

      • Microsoft.VisualStudio.Pro

      • Microsoft.VisualStudio.Premium

      • Microsoft.VisualStudio.Ultimate

      • Microsoft.VisualStudio.VWDExpress

      • Microsoft.VisualStudio.VPDExpress

      • Microsoft.VisualStudio.VSWinExpress

      • Microsoft.VisualStudio.VSLS

      • My.Shell.App

    • Version– 此屬性會指定與此 SKU 的最小和最大支援版本的版本範圍。 封裝可詳述 Sku 所支援的版本。 版本範圍標記法,是 [10.0 – 11.0]

      • [-最小版本 (含)。

      • ] – 最大版本 (含)。

      • (-獨佔的最小版本。

      • ) – 獨佔的最大版本。

      • 單一版本 #-指定的版本。

      重要

      在 Visual Studio 2012 中引進了 VSIX 結構描述的 2.0 版。 使用此結構描述您必須安裝 Visual Studio 2012 或更新版本的電腦上安裝和使用屬於該產品的 VSIXInstaller.exe。 您可以針對較早版本的 Visual Studio 與 Visual Studio 2012 或更新版本的 VSIXInstaller,但只能透過使用較新版本的安裝程式。

    • AnyAttribute*<InstallationTarget>項目允許屬性會公開在做為名稱 / 值組字典的執行階段的開放集合。

相依性項目

這個項目包含此套件會宣告的相依性清單。 如果未指定任何相依性,這些封裝 (由其Id) 必須安裝之前。

  • <Dependency>項目 – 這個子項目具有下列屬性︰

    • Id– 此屬性必須是相依的套件的唯一識別碼。 此身分識別值必須符合<Metadata><Identity>Id此套件會取決於封裝的屬性。 Id屬性會遵循命名空間慣例︰ Company.Product.Feature.Name。 屬性只能包含英數字元,而且限制為 100 個字元。

    • Version– 此屬性會指定與此 SKU 的最小和最大支援版本的版本範圍。 封裝可詳述 Sku 所支援的版本。 版本範圍表示法是非負數 [12.0,13.0],其中︰

      • [-最小版本 (含)。

      • ] – 最大版本 (含)。

      • (-獨佔的最小版本。

      • ) – 獨佔的最大版本。

      • 單一版本 #-指定的版本。

    • DisplayName-此屬性是套件的相依 UI 項目,如對話方塊和錯誤訊息時所使用的顯示名稱。 屬性是選擇性的除非由 MSI 安裝相依的套件。

    • Location– 這個選擇性屬性會指定此 VSIX,巢狀的 VSIX 套件內的相對路徑,或是相依性的下載位置的 URL。 這個屬性用來協助使用者找出必要的封裝。

    • AnyAttribute*Dependency項目接受屬性會公開在做為名稱 / 值組字典的執行階段的開放集合。

資產項目

這個項目包含一份<Asset>這個封裝所呈現的每個擴充功能或內容項目的標記。

  • <Asset>-此項目包含下列屬性和項目︰

    • Type– 這是擴充功能或表示這個項目內容的型別。 每個<Asset>項目必須具有單一Type,但多個<Asset>項目可能會有相同Type。 根據命名空間慣例都應為完整格式名稱,表示這個屬性。 已知型別如下︰

      1. Microsoft.VisualStudio.VsPackage

      2. Microsoft.VisualStudio.MefComponent

      3. Microsoft.VisualStudio.ToolboxControl

      4. Microsoft.VisualStudio.Samples

      5. Microsoft.VisualStudio.ProjectTemplate

      6. Microsoft.VisualStudio.ItemTemplate

      7. Microsoft.VisualStudio.Assembly

      您可以建立自己的型別,並為它們提供唯一的名稱。 在 Visual Studio 內的執行階段,您的程式碼可以列舉並透過擴充管理員 API 來存取這些自訂型別。

    • 路徑-檔案或資料夾,其中包含資產封裝內的相對路徑。

    • AnyAttribute*– 屬性會公開在做為名稱 / 值組字典的執行階段開放集合。

      <AnyElement>*– 任何結構化的內容之間允許<Asset>的開頭和結尾標記。 所有項目都會公開為一份 XmlElement 物件。 VSIX 擴充功能可以在資訊清單檔中定義結構化型別特定的中繼資料,並在執行階段列舉。

範例資訊清單

<?xml version="1.0" encoding="utf-8"?>  
<PackageManifest Version="2.0.0" xmlns="https://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="https://schemas.microsoft.com/developer/vsx-schema-design/2011">  
  <Metadata>  
    <Identity Id="0000000-0000-0000-0000-000000000000" Version="1.0" Language="en-US" Publisher="Company" />  
    <DisplayName>Test Package</DisplayName>  
    <Description>Information about my package</Description>  
    <MoreInfo>http://www.fabrikam.com/Extension1/</MoreInfo>  
    <License>eula.rtf</License>  
    <ReleaseNotes>notes.txt</ReleaseNotes>  
    <Icon>Images\icon.png</Icon>  
    <PreviewImage>Images\preview.png</PreviewImage>  
  </Metadata>  
  <Installation InstalledByMsi="false" AllUsers="false" SystemComponent="false" Scope="ProductExtension">  
    <InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[11.0, 12.0]" />  
  </Installation>  
  <Dependencies>  
    <Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[4.5,)" />  
    <Dependency Id="Microsoft.VisualStudio.MPF.12.0" DisplayName="Visual Studio MPF 12.0" d:Source="Installed" Version="[12.0]" />  
  </Dependencies>  
  <Assets>  
    <Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />  
  </Assets>  
</PackageManifest>  

另請參閱

傳送 Visual Studio 擴充功能