VSIX 擴充功能結構描述 2.0 參考
VSIX 的部署資訊清單檔案描述 VSIX 套件的內容。 由 [結構描述來管理的檔案格式。 在這個結構描述的 2.0 版支援加入自訂型別和屬性。 資訊清單的結構描述可以擴充。 資訊清單的載入器會忽略 XML 元素和屬性,它並不了解。
重要
Visual Studio 2012將會載入 2010年和 2011年格式所描述的 VSIXs。
套件資訊清單的結構描述
資訊清單的 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 中執行的程式碼可以存取在執行階段的資訊清單檔案。 請參閱AdditionalElements和LocalizedAdditionalElements。
中繼資料元素
本章節內容是封裝、 其識別和廣告資訊的相關中繼資料。 <Metadata>包含下列項目:
<Identity>-這會定義此套件的識別資訊,並包含下列屬性:
Id-這個屬性必須被原作者選擇封裝的唯一 ID。 名稱應該符合 CLR 型別都是 namespaced 的方式相同: Company.Product.Feature.Name。 Id屬性是限制為 100 個字元。
Version– 這是定義此封裝及其內容的版本。 這個屬性會遵循 CLR 組件版本控制格式: Major.Minor.Build.Revision (1.2.40308.00)。 較高的版本號碼的封裝會被視為更新套件,,而且可以透過現有安裝的版本來安裝。
Language– 此屬性的預設語言套件,並對應到此資訊清單中的文字資料。 這個屬性之後 CLR 的地區設定程式碼慣例對於資源的組件,例如: en-我們、 短破折號、 fr-fr。 您可以指定neutral宣告會在任何版本的 Visual Studio 執行的非語言相關延伸模組。 預設值是 neutral。
Publisher-這個屬性會識別封包,公司或個別名稱的 「 發行者 」。 Publisher屬性是限制為 100 個字元。
<DisplayName>-此項目會指定使用者易記的封裝名稱在擴充管理員使用者介面中所顯示。 DisplayName內容是限制為 100 個字元。
<Description>-這個選擇性的項目是在擴充管理員使用者介面中所顯示的封裝和其內容的簡短描述。 Description內容可包含您想要的選項,但它有任何文字限制在 1000 個字元。
<MoreInfo>-這個選擇性的項目是要包含的網頁線上封包的完整說明的 URL。 與 http,就必須指定通訊協定。
<License>-這個選擇性的項目是相對路徑到包含在套件 (.txt、.rtf) 或包含該授權網站的 URL 授權檔案。
<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。 本章節包含下列屬性:
Scope-這個屬性可以採用 「 全域"或"ProductExtension"的值:
[全域] 指定的安裝不限於特定的 SKU。 比方說,已擴充的 SDK 安裝時,會使用這個值。
"ProductExtension"指定已安裝的是傳統的 VSIX 副檔名 (1.0 版) 只限於個別 Visual Studio 的 Sku。 此為預設值。
AllUsers– 這個選擇性的屬性會指定是否要為所有使用者安裝這個封裝。 根據預設,這個屬性為 false,以指定的套件是每位使用者。 (當您設定此值設為 true 時,安裝的使用者必須提高為系統管理特殊權限來安裝產生的 VSIX。
InstalledByMsi– 這個選擇性的屬性會指定是否要將這個封裝安裝 MSI 的。 安裝 MSI 套件安裝並管理 MSI (程式和功能) 並不透過 Visual Studio 擴充管理員。 根據預設,這個屬性為 false,以指定的 MSI 並未安裝套件。
SystemComponent– 這個選擇性的屬性會指定此封裝是否應視為系統元件。 系統元件不會以擴充管理員 UI 顯示,且無法更新。 根據預設,這個屬性為 false,以指定的封裝不是系統元件。
AnyAttribute*- Installation項目接受開放式的一組屬性會公開在執行階段,當做名稱 / 值組字典。
<InstallationTarget>–This 元素能控制其中 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]:
] – (含) 的最大版本。
(為獨占式的最小版本。
) – 獨占式的最大版本。
單一版本 #-最小支援具有無限制的最大版本。
AnyAttribute*- <InstallationTarget>項目可讓開放組會在執行階段,當做名稱 / 值組字典公開的屬性。
相依性項目
這個項目會包含一份此套件所宣告的相依性。 如果未指定任何相依性,這些封裝 (可由其Id) 這之前,必須安裝。
<Dependency>項目 – 這個子系項目具有下列屬性:
Id-這個屬性必須為相依套件的唯一 ID。 此識別值必須符合<Metadata><Identity>Id這個套件所相依之封裝的屬性。 Id屬性之後的命名空間慣例: Company.Product.Feature.Name。 屬性可以只包含英數字元,而且僅限於 100 個字元。
Version-這個屬性會宣告此套件所相依之封裝的版本範圍。 版本範圍表示法是 [1.0 – 2.1):
[-(含) 的最小版本。
] – (含) 的最大版本。
(為獨占式的最小版本。
) – (含) 的最大版本。
單一版本 #-最小支援具有無限制的最大版本。
DisplayName-這個屬性是相依套件 UI 項目,例如對話方塊與錯誤訊息時所使用的顯示名稱。 屬性是選擇性的除非由 MSI 安裝相依套件。
Location– 這個選擇性屬性指定為此 VSIX 到巢狀的 VSIX 封裝內的相對路徑或相依性的下載位置的 URL。 這個屬性用來協助使用者憑著必要條件套件。
AnyAttribute*- Dependency項目接受開放式的一組屬性會公開在執行階段,當做名稱 / 值組字典。
資產的項目
這個項目包含一份<Asset>透過此封裝中提出的每個副檔名或內容的項目標籤。
<Asset>-這個項目包含下列的屬性和項目:
Type– 這是擴充或這個項目所表示的內容類型。 每個<Asset>項目必須有一個Type,但多個<Asset>項目可能會有相同的Type。 這個屬性應該根據命名空間慣例來表示為完全合格的名稱。 已知的類型有:
Microsoft.VisualStudio.Package
Microsoft.VisualStudio.MefComponent
Microsoft.VisualStudio.ToolboxControl
Microsoft.VisualStudio.Samples
Microsoft.VisualStudio.ProjectTemplate
Microsoft.VisualStudio.ItemTemplate
Microsoft.VisualStudio.Assembly
您可以建立自己的型別,並賦予唯一的名稱。 在 Visual Studio 中的執行階段,您的程式碼可以列舉,並透過擴充管理員 API 來存取這些自訂的型別。
路徑 – 到檔案或資料夾包含資產的封裝內的相對路徑。
AnyAttribute*– 開放式的一組屬性會公開在執行階段,當做名稱 / 值組字典。
<AnyElement>*– 任何結構化的內容之間,不允許<Asset>開始與結束標記。 所有的項目被公開為一份 XmlElement 物件。 VSIX 擴充功能可以在資訊清單檔中定義結構化型別特定的中繼資料,而列舉它們在執行階段。
範例資訊清單
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0">
<Metadata>
<Identity Version="2.1.40307.0" Id="Fabrikam.Application.Extension1" Language="us-en" Publisher="Fabrikam" />
<DisplayName>Test Extension Package</DisplayName>
<Description>This is my extension description.</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>
<Tags>foo, bar</Tags>
<GettingStartedGuide>http://www.fabrikam.com/guide.htm</GettingStartedGuide>
</Metadata>
<Installation AllUsers="false" SystemComponent="false">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[10.0-11.0]" />
</Installation>
<Dependencies>
<Dependency Id="another.package" Version="[1.2-2.0)" />
<Dependency Id="Microsoft.Framework.NDP" Version="[4.0-5.0)" />
<Dependency Id="mypackage.package" Version="[1.0-2.0)" DisplayName="MyCoolTool" Location="http://www.fabrikam.com/download/mycooltool.msi" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.Package" Path="mypackage.pkgdef" />
<Asset Type="Microsoft.VisualStudio.MEFComponent" Path="mycomponent.dll" />
<Asset Type="Microsoft.VisualStudio.ToolboxControl" Path="mycontrol.pkgdef" />
</Assets>
</PackageManifest>