2012-09-19 72 views
3

您好我使用NRefactory来提取字符串常量,并通过静态变量替换为i18n,我可以成功地做到这一点,但是当我用GetText()输出我的代码时,它不保留原始格式。我希望在最小格式更改的情况下做到这一点。NRefactory如何保持原始格式

谢谢。

回答

0

看看NRefactory CodeProject article的“修改C#代码”部分(最后一部分)。

+0

该部分包含无效的代码。对象“文件”从来没有创建,我不能找到什么类型的信息。 –

+0

@VladimirPerevalov:下载附加到文章的源代码以查看上下文中的代码片段。 – Daniel

0

如果您想保留当前的格式,您可以使用DocumentScript在AST上应用修改。它的工作原理是存储在语法树中的TextLocation属性。

要创建你需要做下面的脚本:

IDocument document = new StringBuilderDocument("source code"); 
CSharpFormattingOptions policy = FormattingOptionsFactory.CreateAllman(); 
var options = new TextEditorOptions(); 

var script = new DocumentScript(document, policy, options); 

现在,您可以像使用替换法,删除,InsertAfter等你AST。它适用于两个ast节点以及偏移量。

它也跟踪修改,所以你不必担心多个变化的冲突。
有关NRefactory的更多示例,您可能还需要检查我的blog