首页 > 解决方案 > “无法在设置文档缓冲区之前设置数据缓冲区。” 对于 IVsTextLines

问题描述

在我的 VSIX 项目中,此错误显示在以下行:

(AdapterService as IVsEditorAdaptersFactoryService).SetDataBuffer(textLines, projBuffer as IProjectionBuffer);

使用我的包的方法textLines创建的位置CreateInstance

Type textLinesType = typeof(IVsTextLines);
Guid riid = textLinesType.GUID;
Guid clsid = typeof(VsTextBufferClass).GUID;
IVsTextLines textLines = (_package as Package).CreateInstance(ref clsid, ref riid, textLinesType) as IVsTextLines;

什么是DocumentTextBuffer属性,我如何在新实例化的对象上设置它IVsTextLines
我想要做的是创建一个IVsTextLines将它作为缓冲区传递给IVsCodeWindow.

标签: visual-studio-2019mefvisual-studio-extensionsvsixvspackage

解决方案


我将初始化更改textLines

textLines = AdapterService.CreateVsTextBufferAdapter(serviceProvider as IOleServiceProvider,
(contentTypeRegistry as IContentTypeRegistryService).GetContentType("csharp")) as IVsTextLines;

然后使用IVsTextBuffer.InitializeContent方法将 Document 和 Data 文本缓冲区初始化为单个空格字符。之后,我能够成功使用该SetBuffer方法。

我还没有完成我的扩展,所以我不确定 Document Buffer 的内容有多相关。


推荐阅读