您好,我使用NRefactory来提取字符串常量,并将其替换为i18n的静态变量,我可以成功地做到这一点,但当我使用GetText()输出代码时,它不会保留原始格式。我希望以最小的格式更改来做到这一点。
谢谢。
发布于 2012-10-19 02:03:25
看看NRefactory CodeProject article的“修改C#代码”部分(最后一部分)。
发布于 2014-03-14 19:07:05
如果你想保持当前的格式,你可以使用DocumentScript在AST上应用修改。它基于存储在语法树中的TextLocation属性工作。
要创建脚本,您需要执行以下操作:
IDocument document = new StringBuilderDocument("source code");
CSharpFormattingOptions policy = FormattingOptionsFactory.CreateAllman();
var options = new TextEditorOptions();
var script = new DocumentScript(document, policy, options);现在你可以在你的AST上使用Replace,Remove,InsertAfter等方法。它既适用于ast节点,也适用于偏移。
它还跟踪修改,因此您不必担心在多个更改上发生冲突。
有关NRefactory的更多示例,您可能还想查看我的blog。
https://stackoverflow.com/questions/12496796
复制相似问题