2017-04-11 3 views
1

実行時にT4(C#)を使用してコードを生成しています。次に、生成されたコードを別のテンプレートの一部である文字列に格納しました。最終テンプレート内の関連するコードは以下のようになります。T4テンプレートC# - 生成されたコードに n r ..という文字列を続けます。

GetGeneratedCode()がある
string myFinalString = @"<#=GetGeneratedCode()#>"; 

public string GetGeneratedCode() 
{ 
    MyTemplate temp = new MyTemplate(); //<- another T4 template 
    return temp.TransformText(); 
} 

MyTemplate.TransformText次のようなコードを返します。

MyClass 
{ 
int myVar1; 
string myVar2; 
} 

問題がでていることです私の生成したソースファイル、文字列myFinalStringは次のように設定されています:

string myFinalString = @"MyClass 
{ 
    int myVar1; 
    string myVar2; 
}"; 

私は以下のように生成された通常の文字列を取得、読みやすくするために、希望:誰もこれで私を助けることができる

string myFinalString = @"MyClass\r\n{\r\n int myVar1;\r\n string myVar2;\r\n}"; 

を?

+0

私は確信してどのようなタイプ 'TransformText()'戻っないんだけど、それは 'temp.TransformText()を使用することが可能である交換してください(Environment.NewLine、 "\\ r \\ n"); ' –

+0

@GrantWinneyそれは、thanks.TransformTextを返します文字列を返します。私はそれがとても単純だとは思わなかった...答えとしてあなたのコメントを再投稿できますか? – Malick

+0

@マリックを聞いてよかった!完了しました。 –

答えて

1

\rおよび\n文字をエスケープすると機能します。これを試してみてください:逐語的な記号を使用して

public string GetGeneratedCode() 
{ 
    MyTemplate temp = new MyTemplate(); //<- another T4 template 
    return temp.TransformText().Replace(Environment.NewLine, "\\r\\n"); 
} 

も同様に動作します。@"\r\n"

関連する問題