Mar*_*ing 3 c# json envdte visual-studio-extensions roslyn-code-analysis
我使用以下代码将新的 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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是我目前的解决方案存在三个问题:
有没有更好的方法将新文本分配给 EnvDTE.Document?
这是损坏的文本的样子:
但这是我分配的:
...
...
},
"client": {
"title": "Mr"
}
}
Run Code Online (Sandbox Code Playgroud)
我分配的 json 文本是有效且格式良好的,即使不是,我也不希望 json 文本出现如此严重的损坏。
如果我将文本直接写入文件,那么 Visual Studio 将询问用户是否要重新加载,我也试图避免该弹出窗口。
任何帮助,将不胜感激。我无法成功使用 roslyn 和 TextDocument,因为我无法加载 AdditionalDocument。roslyn 项目文档集合中仅包含代码文件。
而不是textSelection.Text = contents;您可以使用textSelection.Insert(contents);. 它更快并且可以防止 Visual Studio 更改原始内容。
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |