用aspx文件作为模板
首先申明:标题中的如果是可以去掉的。
想写这篇文章很长时间了,一来是跟大家分享一下,别浪费时间在写代码生成器上面了,什么CodeSmith,XXCodeGenerator等等,都是浮云;二来想跟大家交流交流已达到相互提高的目的。
这篇文章先不讲如何实现,主要是讲讲思想,以及在实现过程中可能会碰到的一些问题:
1。每个人都写过自己的代码生成器,每个人都曾经为自己的代码生成器自豪过,但是有一个缺点,就是代码生成器都是为自己,或者为自己的团队定制的,换一个人,或者换一个团队环境,你的那个代码生成器可能就废了。
2。是否碰到过,每次你的生成的代码都有一些不尽人意的时候(小问题如:一个字符的问题,字段,属性摆放位置,代码缩进等等,大问题如:增加一个方法),你都会打开你的代码生成器源代码,进行一些调整,然后重新编译,ok,问题解决了,可是类似的情况可能会发生n多次。。。唉。。。
3。有没有一个办法可以解决在出现上述第二条中出现的问题,稍微调整一下模板,然后就可以了。方案当然有,现成的就有大把的基于模板的代码生成器,如CodeSmith。
4。如果你是大牛的话,如果你因为用别人的代码生成器而感到拘束,因为不是自家的东西不顺畅,所以你想拥有自己代码生成器,所有你开始了自己的代码生成器的开发历程,主要有下面几种方式:
a).正则表达式查找替换(缺点:要写很多正则表达式,比如,常量正则表达式,列表/列表项正则表达式);
b).基于xml文件方式,然后采用xmlDocument,XPath等方式加载,其实类似第一种,也是查找替换(这种相对第一种稍微好点,博客园中路过秋天大哥的秋色园的页面html代码就是通过这样的方式实现的,至于难度,大家研究过的都知道有多么复杂了)
c).高级点,可能涉及到逻辑处理if else if else, for, foreach, while等等,这种需要话的时间可不是一点点,碰到的问题也是各种各样的,稍微在博客园中搜索一下,就可以找到很多类似的文章
5。4中提到的三种代码生成器都不是我要的,所以一直还是停留在自己为自己定制的代码生成器上,没增加一段内容,都需要修改源码,编译。。。。纠结。
6。一次偶然的机会,看到有人说了这么一句话:ASPX页面上最好的代码生成器,”诶,这个不错哦“,周杰伦说过!但是如果要实现基于ASPX文件的代码生成器,需要将aspx文件宿主在一个ApplicatioinHost中,才能够被解析和访问,一般有下面几种方式:
a).IIS;
b).如果你没有IIS你可以使用中安装VisualStudio的时候自带的WebDev.WebServer.exe中;
c).网上有个开源的项目,名字为:CassiniServer,可以将一个WebSite目录发布成一个网站,可以让你通过浏览器访问;(另外,路过秋天大哥也参考这个写了一个工具,名字为:IIS_V10,本来想个给地址下载的,可是上秋色园使用”找找看“功能搜索关键字“IIS_V10”居然找不到相关文章,看来秋天大哥需要看看你的“找找看“的bug了。)
d).写自己的WebServer,写一个WebServer可不是那么简单的事情哦,虽然我也试过,但是却以失败告终,如果想尝试的同学可以参考用C#开发自己的Web服务器 - 前端开发的日志 - 网易博客系列文章,虽然很难,但是还是可以学到很多东西的。
7。到这里我考虑放弃了,但是在我看到这篇文章(自己写Web服务器(续) - 猴健居士 - 博客园)的时候,想我找到了解决方案了:下面这一句是核心代码:
private AspxCreator _aspxHost = (AspxCreator)ApplicationHost.CreateApplicationHost(typeof(AspxCreator), "/",AppDomain.CurrentDomain.BaseDirectory);
如果觉得不够,可以去仔细看看那篇文章。
总结:一路走来,真是花了不少力气,碰了不少墙壁,虽然走了很多弯路,但是学到了不少东西,还是值得的,代码实现尚在完善中,请大家期待!
用aspx文件作为模板的更多相关文章
- 所有的代码生成器都是浮云,如果可以用aspx文件作为模板
首先申明:标题中的如果是可以去掉的. 想写这篇文章很长时间了,一来是跟大家分享一下,别浪费时间在写代码生成器上面了,什么CodeSmith,XXCodeGenerator等等,都是浮云:二来想跟大家交 ...
- ASP.Net Web Form<一> aspx文件编译及呈现
对比复习下JSP 1.jsp的本质是Servlet ,会在第一次被访问时会被翻译成一个类文件,从此对这个页面的访问都是由这个类文件执行后进行输出. aspx 本质是IHttpHandler 2.jsp ...
- 仅用aspx文件实现Ajax调用后台cs程序。(实例)
仅用aspx文件实现Ajax调用后台cs无刷新程序.(实例) 两个文件:aaa.aspx 和aaa.aspx.cs 一.aaa.aspx <script type="text/java ...
- CI 资源文件加入模板
CI 资源文件加入模板: (资源文件:图片,css,js ,业务文件csv,txt.....) 1.引入url辅助函数库 helper 2.使用base_url函数 生成文件物理硬盘地址 3. ...
- aspx文件、aspx.cs文件、aspx.designer.cs文件之讲解
.aspx文件:(页面)书写页面代码.存储的是页面design代码.只是放各个控件的代码,处理代码一般放在.cs文件中. .aspx.cs文件:(代码隐藏页)书写类代码.存储的是程序代码.一般存放与数 ...
- aspx文件移动到新建的文件夹中设置路径的问题
项目中仅仅把aspx移动到想要的文件夹内是会出错的,不用想也知道是路径问题.这里我就说这个路径该如何去修改. 两个地方需要修改:1.母版路径修改方法: <link href="Styl ...
- 动态生成修改aspx文件
using System.IO; using System.Text;/// <summary>/// SCPage 的摘要说明 修改 aspx 和aspx.cs文件/// </su ...
- .cs文件与aspx.cs文件之间的区别是什么???他们的作用是什么???ASPX文件的作用是什么?
一般在vs里面新建一个页面会产生两种文件:一种是后缀名为.cs的,一种是.aspx. 简单的说,.cs文件一般是在里面实现功能的,而.aspx就是实现界面效果的. 区别:.cs文件里面写的是.net的 ...
- Mybatis映射文件完整模板参照
Mybatis映射文件完整模板参照 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...
随机推荐
- 如何使用Ubuntu online account API创建微博HTML5申请书
在这篇文章中.我们将使用Ubuntu SDK提供online account API来訪问微博的API并显示所须要的内容.这篇文章的重点是展示怎样在HTML 5中使用online account AP ...
- MVC验证12-使用DataAnnotationsExtensions对整型、邮件、最小值、文件类型、Url地址等验证
原文:MVC验证12-使用DataAnnotationsExtensions对整型.邮件.最小值.文件类型.Url地址等验证 本文体验来自http://dataannotationsextension ...
- 快速构建Windows 8风格应用12-SearchContract概述及原理
原文:快速构建Windows 8风格应用12-SearchContract概述及原理 本篇博文主要介绍Search Contract概述.Search Contract面板结构剖析.Search Co ...
- HDOJ 4416 Good Article Good sentence
题解转自:http://blog.csdn.net/dyx404514/article/details/8807440 2012杭州网络赛的一道题,后缀数组后缀自己主动机都行吧. 题目大意:给一个字符 ...
- cocos2d的-X- luaproject的LUA脚本加密
2014/1/26 更新 近期又发现了一个非常easy的方法,事实上coco2dx已经给我们提供设置loader的方法. 注意:有个局限性,在非android平台下调用pEngine->exec ...
- Linux Shell脚本入门--Uniq命令
uniq uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用.也就是说,为了使uniq起作用,所有的重复行必须是相邻的. uniq语法 [root@www ~]# uniq [ ...
- 我的Android 4 学习系列之Intent 和 Broadcast Reciever
目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...
- 站点维护使用app_offline.htm页面提供友好的更新提示
进行站点维护时为了以一个友好的方式提示给用户,比如什么“本网站正在更新”等等的信息可以建立一个叫app_offline.htm 的静态HTM页面文件,其中修改成你要临时显示的内容,将其放在你的应用的根 ...
- php+ajax+json
来个例子:(json.html) <html lang="en"> <head> <meta charset="UTF-8"> ...
- iis7 下配置MVC问题
HTTP 错误 404.0 - Not Found 您要找的资源已被删除.已更名或暂时不可用. 详细错误信息 模块 IIS Web Core 通知 MapRequestHandler 处理程序 Sta ...