次の方法で共有


ProvideLanguageCodeExpansionAttribute クラス

定義

コード スニペットの言語サービスのサポートを登録します。

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
継承
ProvideLanguageCodeExpansionAttribute
属性

この例では、このユーザー定義属性を使用して言語サービスのコード スニペットのサポートを登録する方法を示します。

注意

Visual C# では、名前の "Attribute" 部分を削除することで、ユーザー定義属性の短縮形を使用できます。 この短縮形は、このクラス全体のこのおよび他のすべての例で使用されます。

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] は言語の名前です (クラス コンストラクターの 2 番目のパラメーター ProvideLanguageCodeExpansionAttribute で指定されています)。

  • [language name resource ID] は、表示目的で使用される言語名のリソース ID であるため、ローカライズできます。

  • [スニペット インデックス ファイルへのパス] は、スニペットの場所を記述するインデックス ファイルへの完全なパスです。

  • [言語識別子] は、すべてのスニペットとスニペット インデックス ファイルをマークするために使用される文字列です。 この文字列は、スニペットのセットを特定の言語サービスに関連付けるために使用されます。

  • [スニペットへのパス] インデックス ファイルが使用できない場合にスニペットを検索するパスのセミコロン区切りのリスト。

パスには、Visual Studio にインストールされているルートやユーザーの個人用ドキュメントの場所などの場所を指す置換変数を含めることができます。 これらの置換変数の詳細については、「 レガシ言語サービスでのコード スニペットのサポート 」を参照してください。

クラス コンストラクターは、必要最小限のパラメーターを指定します。 ユーザー定義属性クラスでは、省略可能な名前付きパラメーターもサポートされています。 これらの名前付きパラメーターは、コンストラクターのパラメーター リストで、必要なパラメーターの後に指定されます。 get 演算子と set 演算子の両方をサポートするこのクラスのすべてのプロパティは、名前付きパラメーターとして指定できます。 この例では、名前付きパラメーターの使用方法を示します。

言語サービスには、次のユーザー定義属性が使用されます。

属性 説明
ProvideLanguageServiceAttribute 言語サービスを Visual Studio に登録し、サポートされる機能を指定します。
ProvideLanguageExtensionAttribute ファイル拡張子を言語サービスに関連付けます。
ProvideLanguageEditorOptionPageAttribute 言語サービスに固有の [オプション] ダイアログ ボックスのプロパティ ノードまたはページを指定します。
ProvideLanguageCodeExpansionAttribute 言語サービスのコード スニペットをサポートする場所情報を指定します。
ProvideServiceAttribute 言語サービスを Visual Studio サービスとして登録します。 マネージド コードで提供されるすべてのサービスは、この属性を使用します。

注意 (継承者)

この属性クラスは から継承できないため、実装するものはありません。

注意 (呼び出し元)

この属性クラスは通常、プライマリ VSPackage クラスに適用されますが、任意のクラスに表示できます。 この属性は 1 回だけ表示されます。

コンストラクター

ProvideLanguageCodeExpansionAttribute(Object, String, Int32, String, String)

ProvideLanguageCodeExpansionAttribute クラスの新しいインスタンスを初期化します。

プロパティ

ForceCreateDirs

作成する必要があるディレクトリを含むセミコロンで区切られた文字列を取得または設定します。

LanguageName

言語の名前を取得します。

LanguageServiceSid

言語サービスの GUID を取得します。

SearchPaths

スニペットを検索する既定のパスを含むセミコロン区切りの文字列を取得または設定します。

ShowRoots

コード スニペットのルートを表示するかどうかを取得または設定します。

TypeId

RegistrationAttribute 派生クラスが System.ComponentModel.TypeDescriptor.GetAttributes(...) と連携できるように、TypeID プロパティをオーバーライドします。このプロパティから派生した属性は、クラスに適用できるインスタンスをより適切に制御する必要がある場合にのみ、このプロパティをオーバーライドする必要があります。

(継承元 RegistrationAttribute)

メソッド

GetPackageRegKeyPath(Guid)

VSPackage のレジストリ パス (アプリケーションのレジストリ ルートに対する相対パス) を取得します。

(継承元 RegistrationAttribute)
Register(RegistrationAttribute+RegistrationContext)

クラス コンストラクターで指定されたすべてのレジストリ キーとエントリを作成します。

Unregister(RegistrationAttribute+RegistrationContext)

クラス コンストラクターで指定されているすべてのレジストリ キーとエントリを削除します。

適用対象