"Can't set data buffer before setting document buffer." 对于 IVsTextLines

"Can't set data buffer before setting document buffer." for 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.

我把textLines的初始化改成了

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

然后使用 IVsTextBuffer.InitializeContent 方法将文档和数据文本缓冲区初始化为单个 space 字符。之后我就能够成功使用 SetBuffer 方法。

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