首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改EnvDTE.Document的文本?

如何更改EnvDTE.Document的文本?
EN

Stack Overflow用户
提问于 2017-11-06 09:24:59
回答 1查看 861关注 0票数 3

我使用以下代码为文档分配新的json文本:

代码语言:javascript
复制
    public virtual async Task SetDocumentText(FileInfo fileInfo, string contents)
    {
        if (fileInfo == null)
            throw new ArgumentNullException(nameof(fileInfo));
        var projectItem = FindDTEProjectItem(fileInfo.FullName);
        if (null == projectItem?.Document)
            await Task.Run(() => fileInfo.WriteAllText(contents));
        else
        {
            var textSelection = (TextSelection)projectItem.Document.Selection;
            textSelection.SelectAll();
            textSelection.Text = contents;
            projectItem.Document.Save();
        }
    }

但对于目前的解决方案,我有三个问题:

  1. json文本已损坏。
  2. 分配新文本非常缓慢。
  3. 选择文档中的所有文本。

是否有更好的方法将新文本分配给EnvDTE.Document?

这就是损坏的文本的样子:

但这是我指定的:

代码语言:javascript
复制
  ...
  ...
  },
  "client": {
    "title": "Mr"
  }
}

我分配的json文本是有效的,格式良好,即使不是,我也不会期望json文本会出现如此严重的腐败。

如果我直接将文本写入文件,Visual将询问用户是否要重新加载,我也试图避免弹出。

任何帮助都将不胜感激。我在使用罗斯林和TextDocument时没有成功,因为我无法加载AdditionalDocument。罗斯林项目文档集合中只包含代码文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-08 05:49:26

而不是textSelection.Text = contents;,您可以使用textSelection.Insert(contents);。它更快,并且防止Visual更改原始内容。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47133554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档