我使用以下代码为文档分配新的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();
}
}但对于目前的解决方案,我有三个问题:
是否有更好的方法将新文本分配给EnvDTE.Document?
这就是损坏的文本的样子:

但这是我指定的:
...
...
},
"client": {
"title": "Mr"
}
}我分配的json文本是有效的,格式良好,即使不是,我也不会期望json文本会出现如此严重的腐败。
如果我直接将文本写入文件,Visual将询问用户是否要重新加载,我也试图避免弹出。
任何帮助都将不胜感激。我在使用罗斯林和TextDocument时没有成功,因为我无法加载AdditionalDocument。罗斯林项目文档集合中只包含代码文件。
发布于 2017-11-08 05:49:26
而不是textSelection.Text = contents;,您可以使用textSelection.Insert(contents);。它更快,并且防止Visual更改原始内容。
https://stackoverflow.com/questions/47133554
复制相似问题