gpt4 book ai didi

c# - 如何更改 EnvDTE.Document 的文本?

转载 作者:行者123 更新时间:2023-11-30 20:28:34 25 4
gpt4 key购买 nike

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

    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?

这是损坏的文本的样子:

enter image description here

但这是我分配的:

  ...
...
},
"client": {
"title": "Mr"
}
}

我分配的 json 文本是有效且格式正确的,即使不是,我也不希望 json 文本出现如此严重的损坏。

如果我将文本直接写入文件,则 Visual Studio 会询问用户是否要重新加载,我也在努力避免出现该弹出窗口。

如有任何帮助,我们将不胜感激。我没有成功使用 roslyn 和 TextDocument,因为我无法加载 AdditionalDocument。 roslyn 项目文档集合中仅包含代码文件。

最佳答案

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

关于c# - 如何更改 EnvDTE.Document 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47133554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com