Поделиться через


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# позволяет использовать сокращенную форму определяемого пользователем атрибута путем удаления части "Атрибут" в имени. Эта сокращенная форма используется в этом и во всех других примерах этого класса.

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 (частью пакета SDK VSIP), для создания соответствующих разделов реестра и записей, которые сообщают 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.

  • [имя языка] — это имя языка (как указано во втором параметре конструктора ProvideLanguageCodeExpansionAttribute класса).

  • [идентификатор ресурса имени языка] — это идентификатор ресурса имени языка, который используется для отображения и, следовательно, может быть локализован.

  • [путь к файлу индекса фрагмента] — это полный путь к файлу индекса, описывающий расположение фрагментов кода.

  • [идентификатор языка] — это строка, используемая для пометки всех фрагментов кода и файла индекса фрагментов. Эта строка используется для связывания набора фрагментов кода с определенной языковой службой.

  • [пути к фрагментам] список путей, разделенных точкой с запятой, для поиска фрагментов, если файл индекса недоступен.

Пути могут содержать переменные подстановки, указывающие на такие расположения, как установленный корневой каталог для Visual Studio и расположение пользователя "Мои документы". Дополнительные сведения об этих переменных подстановки см. в статье Поддержка фрагментов кода в языковой службе прежних версий.

Конструктор класса задает минимальные обязательные параметры. Пользовательский класс атрибутов также поддерживает необязательные именованные параметры. Эти именованные параметры указываются в списке параметров конструктора после обязательных параметров. Все свойства этого класса, которые поддерживают операторы get и set, можно указать в качестве именованных параметров. В примере показано, как используются именованные параметры.

Для языковых служб используются следующие определяемые пользователем атрибуты:

attribute Описание
ProvideLanguageServiceAttribute Регистрирует языковую службу в Visual Studio и указывает, какие функции поддерживаются.
ProvideLanguageExtensionAttribute Связывает расширение файла с языковой службой.
ProvideLanguageEditorOptionPageAttribute Указывает узел свойств или страницу для диалогового окна Параметры, относяскогося к языковой службе.
ProvideLanguageCodeExpansionAttribute Указывает сведения о расположении для поддержки фрагментов кода в языковой службе.
ProvideServiceAttribute Регистрирует языковую службу в качестве службы Visual Studio. Все службы, предоставляемые в управляемом коде, используют этот атрибут.

Примечания для тех, кто наследует этот метод

Этот класс атрибута не может быть унаследован от , поэтому реализовать нечего.

Примечания для тех, кто вызывает этот метод

Этот класс атрибутов обычно применяется к основному классу 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)

Удаляет все разделы реестра и записи, определенные конструктором класса.

Применяется к