• CodeSmith Merge策略--小白教程


        为了让 自动产生的代码 和 程序员手写的代码 互不干涉, 提出了Merge策略, 包括以下三种

    InsertRegion: 只插入(覆盖)到指定 #region区域
    InsertClass: 覆盖class, 我没试过
    PreserveRegions: 对某些符合正则表达式的 #region区域, 不覆盖

    下面是我的操作流程(使用 CodeSmith Generator 7 的 TemplateEditor.exe), 大家参考一下吧

    1. 要使用Merge策略, 就必须使用 CodeSmith Generator Project(代码生成项目), 在My Templates文件夹上右击  -->  New  --> CodeSmith Generator Project, 命名为mergeTest.csp 吧

    image

    2. 然后创建一个CSharp模板, 比如merge1.cst, 功能很简单, 就是输出两个变量

    <%@ Template Language="C#" TargetLanguage="C#" %>
    <%@ Property Name="SampleStringProperty" Default="SomeValue" Type="System.String" %>
    <%@ Property Name="SampleBooleanProperty" Default="True" Type="System.Boolean" %>
    SampleStringProperty= <%= SampleStringProperty %>
    SampleBooleanProperty= <%= SampleBooleanProperty %>

    3. 准备一个含有手写代码的目标文件, 命名成merge1.cs, 里面 #region output_here 就是要覆盖的区域

    把这个文件就放在 My Templates文件里面, 但你并不会马上从Template Explorer里看到, 重启 CodeSmith就可以看见了

    //这些区域不会被覆盖
    
    #region output_here
    //这里面填写什么, 都会被覆盖掉
    #endregion
    
    //这些区域也不会被覆盖

    4. 右击mergeTest.csp --> Add Output:

    Template选择 merge1.cst
    File就是要覆盖的文件, 选择刚才创建的merge1.cs
    Merge里的 Type 这次选 InsertRegion
    下面的Initialization string, 没找到帮助文档, 照着例子写, RegionName=output_here, 表示要覆盖的region叫output_here

    image

    5. 右击mergeTest.csp -->Generate Outputs, 就开始执行mergeTest.csp项目里面的各种输出模板了

    6. 再次双击merge1.cs 就可以看到结果了

    //这些区域不会被覆盖
    
    #region output_here
    SampleStringProperty= SomeValue
    SampleBooleanProperty= True
    
    #endregion
    
    //这些区域也不会被覆盖

    至于Merge策略PreserveRegions, 主要的难点还是Initialization string
    比如CodeSmith Generator 7.0 Samples --> Examples  --> Merge --> CSharp 里PreserveRegionsSample.cst就是
    RegionNameRegex=^[ ]*[ s]*"?(?i:Custom)"?;
    意思在 新一行里找到含有Custom这个关键字的region, 就不要覆盖

  • 相关阅读:
    Java 开源博客 Solo 2.5.0 发布
    redis集群部署及踩过的坑
    开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!
    Java9 新特性 详解
    eclipse 安装教程
    博客园代码高亮插件(类似csdn的代码插入)
    【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结
    软件测试学习视频 分享
    Oracle imp exp 导入导出 执行脚本
    在Ubuntu 15下搭建V/P/N服务器pptpd安装和配置
  • 原文地址:https://www.cnblogs.com/zhouandke/p/5894668.html
Copyright © 2020-2023  润新知