T4 模板 C# - 在生成的代码中保留带有 \n \r .. 的常规字符串

T4 Template C# - Keep regular string with \n \r .. in the generated code

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

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

其中 GetGeneratedCode() 是:

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

MyTemplate.TransformText returns 类似于下面的代码:

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

谁能帮我解决这个问题?

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

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

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