こんにちは私はNRefactoryを使用して文字列定数を抽出し、i18nの静的変数で置き換えます。正常に実行できますが、GetText()を使用してコードを出力すると、元の形式が保持されません。最小限のフォーマット変更でそれをやりたいです。
ありがとう。
こんにちは私はNRefactoryを使用して文字列定数を抽出し、i18nの静的変数で置き換えます。正常に実行できますが、GetText()を使用してコードを出力すると、元の形式が保持されません。最小限のフォーマット変更でそれをやりたいです。
ありがとう。
NRefactory CodeProject 記事の「C# コードの変更」部分 (最後のセクション) をご覧ください。
現在のフォーマットを維持したい場合は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 のその他の例については、私のブログも参照してください。