2015-02-11 69 views
0

我想知道如何创建可以在类文件中查找和替换字符串的T4模板。Visual Studio T4模板替换类文件中的文本

例如:
我有一个名为“Test.cs”的类文件,它是由其他进程自动生成的。
我想请针对“test.cs中”文件T4模板,将其重命名认定为“NewText”

test.cs中前T4模板已经跑了所有的“OldText”文本。

public class OldText 
{ 
    public OldText() {} 
} 

Test.cs AFTER T4模板已运行。

public class NewText 
{ 
    public NewText() {} 
} 
+4

这不是T4的用途。这就是VS插件或者Roslyn语法路径所能做到的。 – 2015-02-11 14:28:46

回答

2

正如Jeroen指出的,这不是t4模板的用途。但是,您可能会考虑编写一个t4模板,它将为您生成Test.cs,其中实际的类名将存储在变量中。你Test.tt看起来是这样的:

<#@ template debug="false" hostspecific="false" language="C#" #> 
<#@ output extension=".cs" #> 
<# 
    var className = "OldText"; 
#> 
using System; 

public class <#= className #> 
{ 
    public <#= className #>() {} 
} 

然后,产生test.cs中与类名NewText你只是在一个位置改变className变量的值。

+0

不幸的是,它不只是类名。 T4模板是Microsoft创建的OData模板,在从OData服务中提取元数据时不正确地生成NameSpace.ClassName。 – goroth 2015-02-25 23:11:01

+0

@goroth是你在说什么[this extension](https://visualstudiogallery.msdn.microsoft.com/9b786c0e-79d1-4a50-89a5-125e57475937)?你有没有试过要求在Q&A部分修复? – 2015-02-26 16:27:13

+0

我已经发布了几个错误给他们的网站,但他们不善于响应。 – goroth 2015-02-27 17:15:37