T4 模板 C# - 使用 r 保留常规字符串.在生成的代码中



我正在使用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 = @"MyClassrn{rn int myVar1;rn string myVar2;rn}";

谁能帮我解决这个问题?

转义rn字符应该有效。试试这个:

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

使用逐字符号也可以:@"rn"

最新更新