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为目标,里面的具体步骤我都是参考网上的教程自己操作实现的,至于为什么要这么做就不多做解释,大家想 ...
随机推荐
- web----test-----selenium
selenium ide 安装就自行百度吧. 对百度进行一个简单的录制. 1. 在Firefox浏览器打开百度页面. 2.在Firefox浏览器菜单栏中,选择“工具” ,选择selenium IDE ...
- VirtualBox双网卡搭建Linux虚拟实验环境
VirtualBox中有如下几种网络连接方式: NAT(NAT到宿主机IP地址) NAT Network (NAT到宿主机所在的网段,即使用相同的网关和掩码) Bridged Adapter Inte ...
- leetcode 202
202. Happy Number Write an algorithm to determine if a number is "happy". A happy number i ...
- equals标准写法
@Overridepublic boolean equals(Object obj) { //为了提高效率 if(this == obj){ return true; } //为了提供程序的健壮性 / ...
- IIS 出现如下错误:PageHandlerFactory-Integrated”
原因: vs2010默认的是4.0框架,4.0的框架是独立的CLR,和2.0的不同,如果想运行4.0的网站,需要用aspnet_regiis注册4.0框架,然后用4.0的Class池,就可以运行4.0 ...
- About Mysql 5.7 Installation
After version of mysql 5.7, mysql increase its security level. CMD run as adminstratot cd c:/mysql/b ...
- WIn7系统下 打开.exe程序出现已停止工作关闭程序之解决办法
新装WIN7系统出现 .NET组建没有安装 可到官网下载安装 NETFx4.0 运行MVB 上位机SIM.EXE出现应用程序已停止工作问题 解决办法: 需关闭WIN7 DEP 如下 开始-运行( ...
- mysql 模糊查询语句比较(LIKE、instr、locate、find_in_set、position)
大家都知道mysql 模糊查询的常用方法是LIKE 但这个语句查询效率很慢,那么有没有比较好的方法呢,下面本人测试了几个语句 测试数据800条左右 1,
- 在SQLSERVER中快速有条件删除海量数据技巧推荐
解释: 如果你的硬盘空间小,并且不想设置数据库的日志为最小(因为希望其他正常的日志希望仍然记录),而且对速度要求比较高,并清除所有的数据建议你用turncate table1,因为truncate 是 ...
- php下载网络图片到服务器
/** * 下载二维码到服务器 * @param string $url 图片路径 * @param string $filestring 要保存的文件名 */ private function ...