Udostępnij za pośrednictwem


ProvideLanguageCodeExpansionAttribute Klasa

Definicja

Rejestruje obsługę usługi językowej dla fragmentów kodu.

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
Dziedziczenie
ProvideLanguageCodeExpansionAttribute
Atrybuty

Przykłady

W tym przykładzie pokazano, jak ten atrybut zdefiniowany przez użytkownika jest używany do rejestrowania obsługi fragmentów kodu dla usługi językowej.

Uwaga

Język Visual C# umożliwia skróconą formę atrybutu zdefiniowanego przez użytkownika przez usunięcie części nazwy "Atrybut". Ta skrócona forma jest używana w tym i wszystkich innych przykładach w tej klasie.

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  
    {  
    }  
}  

Uwagi

Ten atrybut zdefiniowany przez użytkownika (specyficzny dla języka C#) służy do dostarczania informacji niezbędnych do zarejestrowania obsługi fragmentów kodu w programie Visual Studio. Wartości określone przez ten atrybut są przechowywane jako metadane w zestawie. Te metadane są później używane przez program, taki jak program regpkg.exe (część zestawu VSIP SDK), aby utworzyć odpowiednie klucze rejestru i wpisy informujące program Visual Studio o usłudze językowej.

Wpisy rejestru, których dotyczy ProvideLanguageCodeExpansionAttribute ten element, znajdują się w następującym kluczu rejestru:

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]  

Gdzie:

  • [X.Y] to wersja programu Visual Studio, na przykład 8.0Exp.

  • [nazwa języka] to nazwa języka (określona w drugim parametrze konstruktora ProvideLanguageCodeExpansionAttribute klasy).

  • [identyfikator zasobu nazwy języka] to identyfikator zasobu nazwy języka używanej do celów wyświetlania i dlatego może być zlokalizowany.

  • [ścieżka do pliku indeksu fragmentu kodu] jest pełną ścieżką do pliku indeksu opisującego lokalizację fragmentów kodu.

  • [identyfikator języka] to ciąg służący do oznaczania wszystkich fragmentów kodu i pliku indeksu fragmentów kodu. Ten ciąg służy do skojarzenia zestawu fragmentów kodu z określoną usługą językową.

  • [ścieżki do fragmentów kodu] rozdzielana średnikami lista ścieżek do wyszukiwania fragmentów kodu, jeśli plik indeksu jest niedostępny.

Ścieżki mogą zawierać zmienne podstawienia wskazujące lokalizacje, takie jak zainstalowany katalog główny programu Visual Studio i lokalizacja Moje dokumenty użytkownika. Aby uzyskać szczegółowe informacje na temat tych zmiennych podstawienia, zobacz Obsługa fragmentów kodu w starszej wersji usługi językowej .

Konstruktor klasy określa minimalne wymagane parametry. Klasa atrybutów zdefiniowana przez użytkownika obsługuje również opcjonalne nazwane parametry. Te nazwane parametry są określone na liście parametrów konstruktora po wymaganych parametrach. Wszystkie właściwości tej klasy, które obsługują zarówno operatory get, jak i set, można określić jako nazwany parametr. W przykładzie pokazano, jak są używane nazwane parametry.

Następujące atrybuty zdefiniowane przez użytkownika są używane dla usług językowych:

Atrybut Opis
ProvideLanguageServiceAttribute Rejestruje usługę językową w programie Visual Studio i określa, jakie funkcje są obsługiwane.
ProvideLanguageExtensionAttribute Kojarzy rozszerzenie pliku z usługą językową.
ProvideLanguageEditorOptionPageAttribute Określa węzeł właściwości lub stronę okna dialogowego Opcje specyficzne dla usługi językowej.
ProvideLanguageCodeExpansionAttribute Określa informacje o lokalizacji do obsługi fragmentów kodu w usłudze językowej.
ProvideServiceAttribute Rejestruje usługę językową jako usługę Visual Studio. Wszystkie usługi dostarczone w kodzie zarządzanym używają tego atrybutu.

Uwagi dotyczące dziedziczenia

Nie można dziedziczyć tej klasy atrybutów, więc nie ma nic do zaimplementowania.

Uwagi dotyczące wywoływania

Ta klasa atrybutów jest zwykle stosowana do podstawowej klasy VSPackage, chociaż może występować w dowolnej klasie. Ten atrybut powinien pojawić się tylko raz.

Konstruktory

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

Inicjuje nowe wystąpienie klasy ProvideLanguageCodeExpansionAttribute.

Właściwości

ForceCreateDirs

Pobiera lub ustawia rozdzielany średnikami ciąg zawierający katalog lub katalogi, które należy utworzyć.

LanguageName

Pobiera nazwę języka.

LanguageServiceSid

Pobiera identyfikator GUID usługi językowej.

SearchPaths

Pobiera lub ustawia rozdzielany średnikami ciąg zawierający domyślne ścieżki do wyszukiwania fragmentów kodu.

ShowRoots

Pobiera lub ustawia, czy powinny być wyświetlane korzenie fragmentów kodu.

TypeId

Zastąp właściwość TypeID, aby umożliwić klasom pochodnym RegistrationAttribute pracować z elementem System.ComponentModel.TypeDescriptor.GetAttributes(...). Atrybut pochodzący z tej właściwości będzie musiał zastąpić tę właściwość tylko wtedy, gdy potrzebuje lepszej kontroli nad wystąpieniami, które można zastosować do klasy.

(Odziedziczone po RegistrationAttribute)

Metody

GetPackageRegKeyPath(Guid)

Pobiera ścieżkę rejestru (względem katalogu głównego rejestru aplikacji) pakietu VSPackage.

(Odziedziczone po RegistrationAttribute)
Register(RegistrationAttribute+RegistrationContext)

Tworzy wszystkie klucze rejestru i wpisy określone przez konstruktora klasy.

Unregister(RegistrationAttribute+RegistrationContext)

Usuwa wszystkie klucze rejestru i wpisy określone przez konstruktora klasy.

Dotyczy