T4模板C# - 在生成的代码

时间:2017-04-11 13:04:19

标签: c# t4

我使用T4(C#)在运行时生成一些代码。然后我将生成的代码存储在另一个模板的字符串中。最终模板中的相关代码如下所示:

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

其中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}";

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

转义\r\n字符应该有效。试试这个:

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

使用逐字符号也可以:@"\r\n"