CodeSmith中共享常用代码

CodeSmith是个很好的模板化的代码生成器,可以生成任何文本的代码。CodeSmith本身就支持在模板里写脚本,比如 

<script runat="template"> 
public string SampleMethod() 
{ 
    return "abc"; 
 
} 
</script>

但很多模板可能会有很多同样这种代码,就需要共享代码,以简洁模板。

  • 自定义模板类,然后在模板里引用这个类。

文件test.cst.cs

using System.ComponentModel; 
using CodeSmith.Engine; 
 
public class UtilityCodeTemplate : CodeTemplate 
{ 
    public string SampleMethod() 
    { 
        return "Hello! My method output!"; 
    } 
}

模板test.cst,注意Src和Inherits的设置

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="test.cst.cs" 
Inherits="UtilityCodeTemplate" Debug="True" Description="Template description here." %>
 
begin <%= SampleMethod() %> end
 
  • 自己生成一个程序集,在模板中通过引用

打开Visual Studio, 添加一个类库项目。

using System; 
using System.Collections.Generic; 
using System.Text; 
 
namespace CodeSmith 
{ 
    public class Utility 
    { 
        public static string SampleMethod() 
        { 
            return "Test OK!"; 
        } 
    } 
}

生成程序集CodeSmith.dll, copy到C:"Program Files"CodeSmith"v4.1"AddIns目录下(看CodeSmith安装目录),重启一下CodeSmith Studio

模板test.cst,引入程序集并添加命名空间

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Debug="True"%> 
<%@ Assembly Name="CodeSmith" %> 
<%@ Import Namespace="CodeSmith" %> 
 
begin <%= Utility.SampleMethod() %> end
 
  • 使用include共享

创建Test.cst.cs

<script runat="template"> 
public string SampleMethod() 
{ 
    return "Test OK!"; 
} 
</script>

模板文件,使用include添加,include其实就是把文件引用进来

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Debug="True"%> 
 
begin <%= SampleMethod() %> end 
 
<!-- #include file="Test.cst.cs" -->
原文地址:https://www.cnblogs.com/leeolevis/p/1383140.html