ProvideLanguageCodeExpansionAttribute 类

注册语言服务的代码段支持。

继承层次结构

System.Object
  System.Attribute
    Microsoft.VisualStudio.Shell.RegistrationAttribute
      Microsoft.VisualStudio.Shell.ProvideLanguageCodeExpansionAttribute

命名空间:  Microsoft.VisualStudio.Shell
程序集:  Microsoft.VisualStudio.Shell.11.0(在 Microsoft.VisualStudio.Shell.11.0.dll 中)

语法

声明
<ComVisibleAttribute(False)> _
<AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple := True, Inherited := True)> _
Public NotInheritable Class ProvideLanguageCodeExpansionAttribute _
    Inherits RegistrationAttribute
[ComVisibleAttribute(false)]
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public sealed class ProvideLanguageCodeExpansionAttribute : RegistrationAttribute

ProvideLanguageCodeExpansionAttribute 类型公开以下成员。

构造函数

  名称 说明
公共方法 ProvideLanguageCodeExpansionAttribute 初始化 ProvideLanguageCodeExpansionAttribute 类的新实例。

页首

属性

  名称 说明
公共属性 ForceCreateDirs 获取或设置包含应创建的内容或目录的分号分隔的字符串。
公共属性 LanguageName 获取该语言的名称。
公共属性 LanguageServiceSid 获取语言服务的 GUID。
公共属性 SearchPaths 获取或设置包含默认路径的一个分号分隔的字符串搜索代码段。
公共属性 ShowRoots 获取或设置是否应显示代码段的根。
公共属性 TypeId 获取此属性的当前实例。 (继承自 RegistrationAttribute。)

页首

方法

  名称 说明
公共方法 Equals 基础结构。返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute。)
公共方法 GetHashCode 返回此实例的哈希代码。 (继承自 Attribute。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 IsDefaultAttribute 当在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute。)
公共方法 Match 当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute。)
公共方法 Register 创建任何注册表项和项按照指定由类构造函数。 (重写 RegistrationAttribute.Register(RegistrationAttribute.RegistrationContext)。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)
公共方法 Unregister 移除任何注册表项和项按照指定由类构造函数。 (重写 RegistrationAttribute.Unregister(RegistrationAttribute.RegistrationContext)。)

页首

显式接口实现

  名称 说明
显式接口实现私有方法 _Attribute.GetIDsOfNames 将一组名称映射为对应的一组调度标识符。 (继承自 Attribute。)
显式接口实现私有方法 _Attribute.GetTypeInfo 检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute。)
显式接口实现私有方法 _Attribute.GetTypeInfoCount 检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute。)
显式接口实现私有方法 _Attribute.Invoke 提供对某一对象公开的属性和方法的访问。 (继承自 Attribute。)

页首

备注

特定于 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。

  • [语言名称] 是该语言的名称 (在对 ProvideLanguageCodeExpansionAttribute 类构造函数的第二个参数中指定)。

  • [语言命名资源 ID] 是使用了用于显示目的并且可以本地化因此语言名称的资源 ID。

  • [代码段索引文件的路径] 是完整路径描述代码段的位置的索引文件。

  • [语言标识符] 会用于字符串标记所有代码段和代码段索引文件。 此字符串用于将设置代码段与特定语言服务。

  • 索引,如果文件不可用,分号分隔的列表[代码段的路径] 路径搜索代码段。

路径可以包含指向位置 (比如安装的支持 Visual Studio ,并且用户的 " 我的文件位置的替换变量。 请参见 为代码段 (托管包结构) 支持 有关这些替换变量详细信息。

类构造函数指定最少量必需的参数。 用户定义的特性类还支持选项命名参数。 这些命名参数在构造函数中指定必需的形参之后。 支持获取和设置运算符的所有此类中的属性可指定为命名参数。 示例演示如何使用命名参数。

以下用户定义的属性为语言服务使用:

特性

说明

ProvideLanguageServiceAttribute

注册 Visual Studio 的语言服务并指定哪些功能支持。

ProvideLanguageExtensionAttribute

将文件扩展名与语言服务。

ProvideLanguageEditorOptionPageAttribute

为选项 " 对话框明确指定属性节点或页中语言服务。

ProvideLanguageCodeExpansionAttribute

在语言服务中指定位置信息支持代码段。

ProvideServiceAttribute

注册语言服务作为 Visual Studio 服务。 在托管代码中使用提供的所有服务此属性。

对实现者的说明

此特性类不能继承因此没有任何实现。

对调用者的说明

此特性类通常会应用于母版 VSPackage 类,不过,它可以出现在任何类。 此属性只应出现一次。

示例

此示例演示此用户定义的属性如何用于注册为语言服务的代码段支持。

备注

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

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.VisualStudio.Shell 命名空间

其他资源

为代码段 (托管包结构) 支持