visual-studio-2019 - “无法在设置文档缓冲区之前设置数据缓冲区。” 对于 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方法将 Document 和 Data 文本缓冲区初始化为单个空格字符。之后,我能够成功使用该SetBuffer
方法。
我还没有完成我的扩展,所以我不确定 Document Buffer 的内容有多相关。
推荐阅读
- c# - Excel在公式中添加“@”符号
- sqlite - Xamarin.Forms SQLiteExtensions 多对多关系未检索
- r - 在给定条件下,在大型数据框中找到正确的单元格值
- amazon-web-services - 某些存储桶上的 AWS S3 putObjectFile 访问被拒绝
- python - Python 请求模块适用于我的 Windows 笔记本电脑,但不适用于 AWS
- android - Android 中的键盘 KeyCode 是如何命名的?
- r - 使用ggplot的带有椭圆边界的R散点图
- android - 如何添加依赖?
- c# - System.Diagnostics.Process.Start() 正在吃掉我的 URL 的一部分
- oauth-2.0 - 创建 LinkedIn oAuth2.0 应用程序 2 ledged - 不允许应用程序创建令牌