Visual Studio T4 模板替换 class 文件中的文本
Visual Studio T4 template replace text in class file
我想知道如何创建可以在 class 文件中查找和替换字符串的 T4 模板。
例如:
我有一个名为 "Test.cs" 的 class 文件,它是由其他进程自动生成的。
我想 运行 一个针对 "Test.cs" 文件的 T4 模板,它将重命名它找到的所有 "OldText" 文本为 "NewText"
Test.cs 在 T4 模板具有 运行 之前。
public class OldText
{
public OldText() {}
}
Test.cs 在 T4 模板具有 运行 之后。
public class NewText
{
public NewText() {}
}
正如 Jeroen 所指出的,这不是 t4 模板的用途。但是,您可以考虑编写一个 t4 模板,它会为您生成 Test.cs,其中实际的 class 名称将存储在一个变量中。您的 Test.tt 可能如下所示:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#
var className = "OldText";
#>
using System;
public class <#= className #>
{
public <#= className #>() {}
}
然后,要使用 class 名称 NewText 生成 Test.cs,您只需在一个地方更改 className
变量的值。
我想知道如何创建可以在 class 文件中查找和替换字符串的 T4 模板。
例如:
我有一个名为 "Test.cs" 的 class 文件,它是由其他进程自动生成的。
我想 运行 一个针对 "Test.cs" 文件的 T4 模板,它将重命名它找到的所有 "OldText" 文本为 "NewText"
Test.cs 在 T4 模板具有 运行 之前。
public class OldText
{
public OldText() {}
}
Test.cs 在 T4 模板具有 运行 之后。
public class NewText
{
public NewText() {}
}
正如 Jeroen 所指出的,这不是 t4 模板的用途。但是,您可以考虑编写一个 t4 模板,它会为您生成 Test.cs,其中实际的 class 名称将存储在一个变量中。您的 Test.tt 可能如下所示:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#
var className = "OldText";
#>
using System;
public class <#= className #>
{
public <#= className #>() {}
}
然后,要使用 class 名称 NewText 生成 Test.cs,您只需在一个地方更改 className
变量的值。