LanguageService 类

这是提供语言功能包括公开的语法的语言服务的基类,匹配的大括号,自动完成, IntelliSense 支持和代码段展开。

此 API 不兼容 CLS。 

继承层次结构

System.Object
  Microsoft.VisualStudio.Package.LanguageService

命名空间:  Microsoft.VisualStudio.Package
程序集:   Microsoft.VisualStudio.Package.LanguageService.9.0(在 Microsoft.VisualStudio.Package.LanguageService.9.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService.10.0(在 Microsoft.VisualStudio.Package.LanguageService.10.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService.11.0(在 Microsoft.VisualStudio.Package.LanguageService.11.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService(在 Microsoft.VisualStudio.Package.LanguageService.dll 中)

语法

声明
<CLSCompliantAttribute(False)> _
<ComVisibleAttribute(True)> _
Public MustInherit Class LanguageService _
    Implements IDisposable, IVsLanguageInfo, IVsLanguageDebugInfo, IVsProvideColorableItems,  _
    IVsLanguageContextProvider, IServiceProvider, IObjectWithSite, ISynchronizeInvoke, IVsDebuggerEvents,  _
    IVsFormatFilterProvider
[CLSCompliantAttribute(false)]
[ComVisibleAttribute(true)]
public abstract class LanguageService : IDisposable, 
    IVsLanguageInfo, IVsLanguageDebugInfo, IVsProvideColorableItems, IVsLanguageContextProvider, IServiceProvider, 
    IObjectWithSite, ISynchronizeInvoke, IVsDebuggerEvents, IVsFormatFilterProvider

LanguageService 类型公开以下成员。

构造函数

  名称 说明
受保护的方法 LanguageService 初始化 LanguageService 类的新实例。

页首

属性

  名称 说明
公共属性 InvokeRequired 确定是否必须跨线程边界调用方法。
公共属性 IsActive 确定语言服务是否已连接到当前视图并处于活动状态。
公共属性 IsDebugging 确定调试器是否处于活动状态。
公共属性 IsParsing 确定背景是否分析正在进行。
公共属性 LastActiveTextView 返回最后一个有效的文本视图与此语言服务。
公共属性 MainThreadId 返回此语言服务运行线程的 ID。
公共属性 Name 返回该语言的名称 (例如, “C++”或 “HTML”)。
受保护的属性 ParseThreadIsAlive
公共属性 ParseThreadPaused
公共属性 Preferences 提供对语言服务首选项。
公共属性 Site 返回服务提供程序提供此语言服务。

页首

方法

  名称 说明
公共方法 AbortBackgroundParse
公共方法 AddCodeWindowManager 添加一个代码窗口管理器到语言服务。
公共方法 BeginInvoke 调用在另一个线程的方法。
公共方法 BeginParse 开始在后台线程的分析操作。
公共方法 CanStopThread
公共方法 CreateCodeWindowManager 实例化 CodeWindowManager 类。
公共方法 CreateDocumentProperties 实例化 DocumentProperties 类。
公共方法 CreateDropDownHelper 实例化 TypeAndMemberDropdownBars 类。
公共方法 CreateExpansionFunction 实例化 ExpansionFunction 类。
公共方法 CreateExpansionProvider 实例化 ExpansionProvider 类。
公共方法 CreateParseRequest 创建请求满足分析的给定原因随后传递给分析器。
公共方法 CreateSource 实例化 Source 类。
公共方法 CreateViewFilter 实例化 ViewFilter 类。
公共方法 CurFileExtensionFormat 返回索引到文件扩展名的列表与指定的文件名的扩展。
公共方法 DispatchCommand(Guid, UInt32, IntPtr, IntPtr) 调用执行指定的命令。
公共方法 DispatchCommand(Guid, UInt32, UInt32, IntPtr, IntPtr)
公共方法 Dispose 调用,当销毁语言服务对象。
公共方法 EndInvoke 检索异步调用的结果开始由 LanguageService.BeginInvoke
公共方法 Equals 确定指定的对象是否等于当前对象。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetCodeWindowManager 实例化 CodeWindowManager 类。
公共方法 GetCodeWindowManagerForSource 返回 CodeWindowManager 对象与指定的 Source 对象。
公共方法 GetCodeWindowManagerForView 返回 CodeWindowManager 与指定的 IVsTextView 对象。
公共方法 GetColorableItem 返回请求的 IVsColorableItem 对象。
公共方法 GetColorizer(IVsTextLines) Iinstantiates Colorizer 类。
公共方法 GetColorizer(IVsTextLines, IVsColorizer%) 返回 colorizer 与包含特定 IVsTextLines 对象的 Source 对象。
公共方法 GetFileExtensions 返回包含文件扩展名的字符串与此语言。
公共方法 GetFormatFilterList 返回文件扩展名筛选器列出适用于 保存 对话框。
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetImageList 返回图像列表包含标志符号与语言服务。
公共方法 GetItemCount 返回语言服务支持的自定义可着色项的数目。
公共方法 GetIVsDebugger 返回表示当前可用的调试器的 IVsDebugger 对象以侦听调试器事件。
公共方法 GetIVsTextMacroHelperIfRecordingOn 返回 IVsTextMacroHelper 对象宏记录是否打开。
公共方法 GetLanguageID 返回语言服务的 GUID 语言。
公共方法 GetLanguageName 返回该语言的名称此语言服务处理。
公共方法 GetLanguagePreferences 返回此语言服务的一 LanguagePreferences 对象。
公共方法 GetLanguageServiceGuid 返回语言服务的 GUID。
公共方法 GetLocationOfName 始终返回 E_NOTIMPL的过时方法。
公共方法 GetNameOfLocation 返回包含给定位置中的元素的名称。
公共方法 GetOrCreateSource
公共方法 GetParseResult 在分析操作的结果。
公共方法 GetPrimaryViewForSource
公共方法 GetProximityExpressions 返回在 汽车 窗口将计算和显示的表达式列表,行特定的大小。
公共方法 GetScanner 返回分析器的一个实例化。
公共方法 GetService 返回可转换为特定接口的服务对象。
公共方法 GetSite 返回一 unmarshaled 指针传递给请求的接口。
公共方法 GetSource(IVsTextLines) 返回包含数据源指定缓冲区的现有 Source 对象。
公共方法 GetSource(IVsTextView) 返回包含中指定的文本视图显示的源文件中的现有 Source 对象。
公共方法 GetSource(String) 返回给定的现有 Source 对象文件名称。
公共方法 GetSources 返回 Source 对象的集合语言服务维护。
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 Initialize 调用初始化语言服务。
公共方法 Invoke 调用特定委托指定的任务。
公共方法 IsMacroRecordingOn 调用确定宏记录是否打开。
公共方法 IsMappedLocation 调用确定特定源文件中的指定位置是否引用其他文件中的代码。
公共方法 IsSourceOpen 确定源文件是否处于打开状态。
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 OnActiveViewChanged 调用,在当前视图更改为另一个视图。
公共方法 OnCaretMoved 调用,则插入符号移动。
受保护的方法 OnChangesCommitted 调用时,自动完成或代码段展开操作生成的更改提交到缓冲区。
公共方法 OnCloseSource 调用关闭指定的 Source 对象。
公共方法 OnIdle 被调用,而其他操作不需要进行处理。
公共方法 OnModeChange 调用,每当调试模式已更改,在调试时。
公共方法 OnParseAborted
公共方法 OnParseComplete 调用,并在后台分析时完成。
公共方法 OpenDocument 打开所指定的文件。
公共方法 ParseSource 分析根据指定的 ParseRequest 对象的数据源。
公共方法 QueryInvalidEncoding 确定指定的源格式是否有效。
公共方法 QueryService 返回一项时指定的服务的请求接口。
公共方法 QueryWaitForAutoOutliningCallback
公共方法 RemoveCodeWindowManager 调用,当视图与指定的 CodeWindowManager 已关闭。
公共方法 ResolveName 返回的方法名称匹配指定的标志修改的给定名称。
公共方法 ScrollToEnd(IVsTextView) 更新指定的视图显示源文件尾。
公共方法 ScrollToEnd(IVsWindowFrame) 更新在指定的窗架的视图显示源文件尾。
公共方法 SetSite 调用设置或站点此语言服务的服务提供程序。
公共方法 SetUserContextDirty 标记用户上下文为 " 对指定的源缓冲区。
公共方法 SynchronizeDropdowns 调用更新基于当前脱字号位置的下拉栏。
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)
公共方法 UpdateLanguageContext 在给定源中的选定的区域更新当前用户帮助上下文。
公共方法 ValidateBreakpointLocation 调用确定给定位置是否可以具有断点应用于它。

页首

显式接口实现

  名称 说明
显式接口实现私有方法 IVsFormatFilterProvider.CurFileExtensionFormat 返回索引到文件扩展名的列表与指定的文件名的扩展。
显式接口实现私有方法 IVsFormatFilterProvider.GetFormatFilterList 返回文件扩展名筛选器列出适用于 保存 对话框。
显式接口实现私有方法 IVsFormatFilterProvider.QueryInvalidEncoding 确定指定的源格式是否有效。
显式接口实现私有方法 IVsLanguageContextProvider.UpdateLanguageContext 更新给定的当前用户帮助上下文给定源中的选定的区域。

页首

备注

Visual Studio 使用语言服务提供代码语言支持。 ,安装后,语言服务向 Visual Studio 注册语言服务包。 的一部分此注册过程来将文件扩展名与语言服务,在具有该扩展名的文件加载后,语言服务还加载。

LanguageService 类是语言服务的基类。 Visual Studio 实例化实现语言服务的 VSPackage 并调用在 VSPackage 中 SetSite 方法。 此方法的实现,在 Package 基类的 Initialize 方法调用。 重写 Initialize 方法实例化语言服务。 确保在实例化后调用语言服务的 SetSite 方法。

对实现者的说明

从此类派生类创建拥有语言服务。 您还必须,至少,实现 IScanner 接口的分析器。 语言服务的所有功能基于此分析器。

该以下方法和属性在类派生的 tom 标记为抽象类,并且必须实现 LanguageService 类:

将要实现的方法/属性

说明

GetLanguagePreferences

返回 LanguagePreferences 对象的方法。

GetScanner

返回 IScanner 对象的方法。

ParseSource

分析数据源的方法。

Name

返回语言名称的只读属性

如果您不希望支持 ValidateBreakpointLocation ,但该语言支持断点,必须重写 ValidateBreakpointLocation 方法并返回包含指定的行和列的大小;否则,断点不能设置任何位置排除行将 1。 可以返回 E_NOTIMPL 指示您未以其他方式支持此方法,但必须始终设置范围。 在 ValidateBreakpointLocation 方法的示例显示了如何实现的。

对调用者的说明

注册语言服务,即使安装 VSPackage 时 (这可能是包专用语言服务也可以同时提供语言服务) 的项目包。 在实例化包中初始化时拥有语言服务。 Visual Studio 与语言服务以在该语言编写的代码支持的语言服务。 为此语言注册如何请参见下面的示例可完成。

示例

下面的示例演示如何注册并初始化包的语言服务。 注意: MyLanguageService 从 LanguageService 类派生。

using System.ComponentModel.Design;
using Microsoft.VisualStudio.Shell;

namespace MyLanguagePackage
{
    /////////////////////////////////////////////
    // Other package registration details go here
    /////////////////////////////////////////////

    // Offer a new language service
    [ProvideServiceAttribute(typeof(MyLanguageService),
                                       ServiceName = "My Language Service")]

    // Register the language service with Visual Studio.
    // "106" is the resource ID in the satellite DLL to the localized language name.
    [ProvideLanguageServiceAttribute(typeof(MyLanguageService),"My Language",106)]

    // Associate a file extension with our language service.
    [ProvideLanguageExtensionAttribute(typeof(MyLanguageService), ".myext")]

    class MyLanguagePackage : Package
    {
        protected override void Initialize()
        {
            base.Initialize();

            IServiceContainer serviceContainer = this as IServiceContainer;
            MyLanguageService languageService = new MyLanguageService();
            languageService.SetSite(this);
            serviceContainer.AddService(typeof(MyLanguageService),
                                        languageService,
                                        true);
        }
    }
}

线程安全

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

请参见

参考

Microsoft.VisualStudio.Package 命名空间

其他资源

语言服务概述 (托管包结构)