ProvideLanguageCodeExpansionAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
註冊代碼段的語言服務支援。
public ref class ProvideLanguageCodeExpansionAttribute sealed : Microsoft::VisualStudio::Shell::RegistrationAttribute
public ref class ProvideLanguageCodeExpansionAttribute sealed : Microsoft::VisualStudio::Shell::RegistrationAttribute
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
[System.Runtime.InteropServices.ComVisible(false)]
public sealed class ProvideLanguageCodeExpansionAttribute : Microsoft.VisualStudio.Shell.RegistrationAttribute
[<System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
type ProvideLanguageCodeExpansionAttribute = class
inherit RegistrationAttribute
Public NotInheritable Class ProvideLanguageCodeExpansionAttribute
Inherits RegistrationAttribute
- 繼承
- 屬性
範例
此範例示範如何使用這個使用者定義屬性來註冊語言服務代碼段的支援。
注意
Visual C# 可藉由卸除名稱的「屬性」部分,來允許使用者定義屬性的速記形式。 此速記表單用於此類別和其他所有範例中。
using Microsoft.VisualStudio.Shell;
namespace MyLanguagePackage
{
internal class MyConstants
{
public const string languageName = "MyLanguage";
public const int languageNameResourceID = 106;
public const string languageIdentifier = "mylanguage";
public const string snippetsIndexFilePath = @"%InstallRoot%\MyLanguage\SnippetsIndex.xml";
}
[ProvideCodeExpansion(typeof(MyLanguageService),
MyConstants.languageName,
MyConstants.languageNameResourceID,
MyConstants.languageIdentifier,
MyConstants.snippetsIndexFilePath,
// Optional code expansion properties
SearchPaths = @"%InstallRoot%\MyLanguage\Snippets\%LCID%\Snippets;" +
@"\%MyDocs%\Code Snippets\MyLanguage\My Code Snippets";
)]
class MyLanguagePackage
{
}
}
備註
這個使用者定義屬性 (C#) 特有的屬性可用來提供向 Visual Studio 註冊語言服務支援所需的資訊。 這個屬性所指定的值會儲存為元件中的元數據。 此元數據稍後會由 regpkg.exe 程式 (VSIP SDK) 部分的程式使用,以建立對應的登錄機碼和專案,告知 Visual Studio 語言服務。
受影響的登錄 ProvideLanguageCodeExpansionAttribute 項目位於下列登錄機碼之下:
HKEY_LOCAL_MACHINE\
SOFTWARE\
Microsoft\
VisualStudio\
[X.Y]\
Languages\
CodeExpansions\
[language name]\
(Default) = reg_sz: [Language Service GUID]
DisplayName = reg_sz: [language name resource ID]
IndexPath = reg_sz: [path to snippet index file]
Package = reg_sz: [Package GUID]
LangStringID = reg_sz: [language identifier]
Paths\
(Default) = reg_sz:
[language name] = reg_sz: [paths to snippets]
其中:
[X.Y] 是 Visual Studio 的版本,例如 8.0Exp。
[language name] 是語言 (的名稱,如類別建構函式) 的第二個參數 ProvideLanguageCodeExpansionAttribute 中所指定。
[語言名稱資源識別符] 是用於顯示之語言名稱的資源識別符,因此可以當地語系化。
[代碼段索引檔案的路徑] 是描述代碼段位置之索引檔案的完整路徑。
[語言識別符] 是用來標記所有代碼段和代碼段索引檔案的字串。 此字串可用來將一組代碼段與特定語言服務產生關聯。
[代碼段的路徑] 如果索引檔案無法使用,則為要搜尋代碼段的路徑分號分隔清單。
路徑可以包含替代變數,指向 Visual Studio 安裝根目錄和使用者 [我的檔] 位置等位置。 如需這些替代變數的詳細資訊,請參閱 舊版語言服務中的代碼段支援 。
類別建構函式會指定所需的最小參數。 使用者定義屬性類別也支持選擇性的具名參數。 這些具名參數會在建構函式的參數清單中指定,並在必要參數之後指定。 這個類別上支援 get 和 set 運算子的所有屬性都可以指定為具名參數。 此範例示範如何使用具名參數。
下列使用者定義屬性會用於語言服務:
屬性 | Description |
---|---|
ProvideLanguageServiceAttribute | 向 Visual Studio 註冊語言服務,並指定支援哪些功能。 |
ProvideLanguageExtensionAttribute | 將擴展名與語言服務產生關聯。 |
ProvideLanguageEditorOptionPageAttribute | 為語言服務特定的 [選項] 對話框指定屬性節點或頁面。 |
ProvideLanguageCodeExpansionAttribute | 指定位置資訊以支援語言服務中的代碼段。 |
ProvideServiceAttribute | 將語言服務註冊為 Visual Studio 服務。 Managed 程式代碼中提供的所有服務都會使用此屬性。 |
給繼承者的注意事項
這個屬性類別無法繼承自 ,因此不會實作任何專案。
給呼叫者的注意事項
這個屬性類別通常會套用至您的主要 VSPackage 類別,不過它可以出現在任何類別上。 此屬性應該只會出現一次。
建構函式
ProvideLanguageCodeExpansionAttribute(Object, String, Int32, String, String) |
初始化 ProvideLanguageCodeExpansionAttribute 類別的新執行個體。 |
屬性
ForceCreateDirs |
取得或設定以分號分隔的字串,其中包含應該建立的目錄或目錄。 |
LanguageName |
取得語言的名稱。 |
LanguageServiceSid |
取得語言服務的 GUID。 |
SearchPaths |
取得或設定以分號分隔的字串,其中包含要搜尋代碼段的預設路徑。 |
ShowRoots |
取得或設定是否應該顯示代碼段的根目錄。 |
TypeId |
覆寫 TypeID 屬性,讓 RegistrationAttribute 衍生類別搭配 System.ComponentModel.TypeDescriptor.GetAttributes (...) 。衍生自這個屬性的屬性只有在需要對可套用至類別的實例有更好的控制權時,才必須覆寫此屬性。 (繼承來源 RegistrationAttribute) |
方法
GetPackageRegKeyPath(Guid) |
取得相對於 VSPackage 之應用程式) 之登錄根目錄的登錄路徑 (。 (繼承來源 RegistrationAttribute) |
Register(RegistrationAttribute+RegistrationContext) |
建立類別建構函式所指定的所有登錄機碼和專案。 |
Unregister(RegistrationAttribute+RegistrationContext) |
拿掉類別建構函式所指定的所有登錄機碼和專案。 |