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 吧

 

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

 

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=^[ \t]*[ \s]*"?(?i:Custom)"?;

意思在 新一行里找到含有Custom这个关键字的region, 就不要覆盖

时间: 2024-10-12 10:40:50

CodeSmith Merge策略--小白教程的相关文章

cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程) 此教程仅供参考,C++小白系列,从新建工程到打包apk,大神们可在评论多给留言建议,若有不详或错误请予指点.OK,我们直入主题 本教程开发环境详情如下开发系统:win764位开发工具:cocos引擎v2.3.3,VS2013cocos2dx版本:3.9 步骤一:windows下各类工具安装(ja

教你从头到尾利用DQN自动玩flappy bird(全程命令提示,纯小白教程)

教你从头到尾利用DQN自动玩flappy bird(全程命令提示.纯小白教程) 作者:骁哲.李伟.July说明:本教程主要由骁哲编写,且最后跑的是yenchenlin的github开源demo.如遇问题欢迎加Q群交流:472899334.时间:二零一六年十月十三日. 前言 我们在上一篇教程<基于torch学汪峰写歌词.聊天机器人.图像着色/生成.看图说话.字幕生成>中说到:"让每一个人都能玩一把,无限降低初学朋友的实验门槛",那是否能把难度再次降低呢,比如部分同学不熟悉Li

cocos游戏开发小白教程网站

<Quick-Cocos2d-x v3.3小白书系列教程> <Quick-Cocos2d-x初学者游戏教程>

MYSQL备份与恢复策略与教程

数据备份属于数据容灾保护中的内容,所有的数据备份系统设计都基于这五个元素,备份源.备份目标.传输网络.备份引擎和备份策略.用户按照需要制定备份策略,使用定时任务执行备份脚本,使用备份引擎将需要备份的的数据从备份源通过传输网络传送到备份目标. 备份五元组: 1.备份源 需要备份的数据统一称为备份源,可以是文本数据,音视频数据,也可以是数据库数据等等. 2.备份目标 存放备份数据的位置,通常建议将备份数据存放在异机,或者是更远的数据中心,备份目标可以是在线的磁盘,磁盘阵列柜,也可以是磁带库或是虚拟带

联想拯救者u盘重装win7旗舰版系统完全小白教程

心心念念的电脑终于到手了,然而用惯了win7的女汉子对着win10界面真心无感!既然无感那就重装啊!什么?没男票?电脑就是我男票.(手动微笑)想当初前任就是因为重装系统认识的,然而现在,呵呵,宝宝要你何用. 话不多说,进入正题. 一.材料准备.  首先你需要一个U盘,至少4g大小.然后你需要一个软件,网上有很多U盘启动器制作的,在这里推荐u大师.最后你需要下载一个win7旗舰版镜像,系统之家的就成. 二.U盘启动盘制作.(以下教程引用自:http://www.udashi.com/n/20121

MYSQL安装--小白教程

这个是mysql的安装过程,其实mysql的安装也很简单,但是我安装了一下午!!一下午!!原因就是,我把mysql的官网都翻遍了,都没找到64bit的.msi安装包,后来才想到好像64bit的电脑可以安装32bit的软件(好吧,允许你们鄙视我),然后剩下的就easy,下边,咳咳,看黑板,要划重点了. 首先,嗯依旧是首先,我们需要去官网下载安装包,http://dev.mysql.com/downloads/windows/installer/ 这个是window版本的最新安装包(那个小鲸鱼log

手把手教你搭建caffe及手写数字识别(全程命令提示、纯小白教程)

手把手教你搭建caffe及手写数字识别 作者:七月在线课程助教团队,骁哲.小蔡.李伟.July时间:二零一六年十一月九日交流:深度学习实战交流Q群 472899334,有问题可以加此群共同交流.另探究实验背后原理,请参看此课程:11月深度学习班. 一.前言 在前面的教程中,我们搭建了tensorflow.torch,教程发布后,大家的问题少了非常多.但另一大框架caffe的问题则也不少,加之caffe也是11月深度学习班要讲的三大框架之一,因此,我们再把caffe的搭建完整走一遍,手把手且全程命

selenide小白教程

目的: 趁着清明假期临近把手头工作整理了一下,前段时间老大给了一个selenide研究的任务,虽然对selenium的应用比较熟悉,但是以前一直没怎么研究过其他衍生的技术,在研究过程中发现国内好的帖子只是把selenide官网上的内容谷歌翻译了一下就贴出来了,可能对国内一些像学习自动化的小白们摸不到头脑,还不如直接对原著,所有本次总结直接从小白基础做起,下面直接进入主题. selenide简介: 说白了selenide就是基于Selenium WebDriver进一步封装的自动化测试框架. 优点

win7下安装linux(centos6.5)双系统详细小白教程

在正式介绍linux安装教程之前,先声明一下本人也是刚开始接触linux,所以教程只以成功安装linux为目标,里面的具体步骤我都是参考网上的教程自己操作实现的,至于为什么要这么做就不多做解释,大家想弄清楚的话还是自行了解linux的相关知识吧.(注:因为我在写教程时已经装好linux,所以就不再重新在安装向导中截图了,下面的截图都是直接用网上的) 现在就开始讲重点了! 准备工作: 1.centos6.5镜像文件,下载地址:http://www.xitongzhijia.net/linux/20