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, 就不要覆盖
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++小白教程 ...
- 制作Windows10政府版的小白教程
制作Windows10政府版的小白教程 https://03k.org/make10entg.html 首先,宿主系统要比操作的系统新,因为低版本dism操作不了: 当然也可以单独下载ADK,提取最新 ...
- git与github建立仓库连接步骤(纯小白教程)
一.先对git 进行用户设置 首先你得在网上下载git软件并且安装,一路默认安装就好了,然后就可以开始本地仓库的建立了.打开你安装好的git, 在开始菜单里面找到git文件夹里面的git bash端 ...
- 搭建个人wordpress博客(小白教程)
新浪sae平台现在是有个免费个人空间使用,现在,教您如何使用该平台搭建属于自己的个人网站,本教程以wordpress程序安装包搭建个人网站. 申请新浪云账号 如果我们使用SAE新浪云计算平台作为服务器 ...
- cocos游戏开发小白教程网站
<Quick-Cocos2d-x v3.3小白书系列教程> <Quick-Cocos2d-x初学者游戏教程>
- MYSQL安装--小白教程
这个是mysql的安装过程,其实mysql的安装也很简单,但是我安装了一下午!!一下午!!原因就是,我把mysql的官网都翻遍了,都没找到64bit的.msi安装包,后来才想到好像64bit的电脑可以 ...
- selenide小白教程
目的: 趁着清明假期临近把手头工作整理了一下,前段时间老大给了一个selenide研究的任务,虽然对selenium的应用比较熟悉,但是以前一直没怎么研究过其他衍生的技术,在研究过程中发现国内好的帖子 ...
- SVM小白教程(1):目标函数
关于 SVM(支持向量机),网上教程实在太多了,但真正能把内容讲清楚的少之又少.这段时间在网上看到一个老外的 svm 教程,几乎是我看过的所有教程中最好的.这里打算通过几篇文章,把我对教程的理解记录成 ...
- win7下安装linux(centos6.5)双系统详细小白教程
在正式介绍linux安装教程之前,先声明一下本人也是刚开始接触linux,所以教程只以成功安装linux为目标,里面的具体步骤我都是参考网上的教程自己操作实现的,至于为什么要这么做就不多做解释,大家想 ...
随机推荐
- c#查找string数组的某一个值的索引
string[] array = { "A","B","C","D","H"}; var ind ...
- oracle contains
1. 查询住址在北京的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'beijing' )remark: ...
- CPU阿甘:函数调用的秘密
个人感言:真正的知识是深入浅出的,码农翻身" 公共号将苦涩难懂的计算机知识,用形象有趣的生活中实例呈现给我们,让我们更好地理解.感谢"码农翻身" 公共号,感谢你们的成果, ...
- powerdesigner逆向工程,从数据库导出PDM
本文工具: powerdesigner 15, 数据源oracle 11g 第一步如图,新建一个模型 第二步:选中当前模型 testdb. 然后在菜单栏database->update mod ...
- 9、SQL Server 操作数据
插入数据 使用Insert Into 插入 if(exists(select * from sys.databases where name = 'webDB')) drop database web ...
- 【转】sql server获取数据库名,表明,表结构
1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: SELECT Name FR ...
- Redis配置文件参数说明
Redis配置文件参数说明 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis ...
- SCN
SCN 一.SCN的引入 众所周知,当oracle实例崩溃时,oracle通过检查点队列使用CKPT进程,周期性的将LRBA记入控制文件,以记录读取REDO LOG的范围.确定范围之后,oracle首 ...
- MySQL追踪优化器小试
首先看一下MySQL追踪优化器的典型用法: 打开:SET optimizer_trace="enabled=on"; 查询优化器的信息:SELECT * FROM INFORMAT ...
- Chrome54安装最新版Flash版本办法
从 Chrome54 版本开始,flash默认已经不能使用了.打开机器上的C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Pe ...