C# T4模板,引用类文件,调用类方法
1.引用程序集
<#@ assembly name="$(TargetDir)\CustProjectName.dll" #>
2.引用命名空间
<#@ import namespace="CustProjectName.Util" #>
3.正常调用
3.1.T4Code
<#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core" #> <#@ assembly name="netstandard" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import namespace="System.IO" #> <#@ import namespace="System.Collections.Generic" #> <#@ assembly name="$(TargetDir)\CustProjectName.dll" #> <#@ import namespace="CustProjectName.Extends" #> <#@ output extension=".cs" #> <# T4Extend.CreateFile(); #> namespace CustSpace { <# var name = "aaaa".Init(); #> // public class <#= name #> { } <# List<string> nameList = T4Extend.InitList(); foreach(var item in nameList){#> // public class <#= item #> { } <#} #> }
3.2.ClassCode
using System.Collections.Generic; using System.Linq; using System.IO; namespace CustProjectName.Extends { public static class T4Extend { public static string Init(this string saa) { return "Robot1"; } public static List<string> InitList() { return Enumerable.Range(1, 9).Select(x => $"CustName1_{x}").ToList(); } public static void CreateFile() { using (var fileStream = new FileStream(@"C:\Working\test.txt", FileMode.OpenOrCreate)) { using (var streamWriter = new StreamWriter(fileStream)) { streamWriter.WriteLine("Hello World!!!"); } } } } }
3.3.NetCore需要添加以下程序集才不会异常
<#@ assembly name="netstandard" #>