用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 ...
随机推荐
- hdu1848 Fibonacci again and again(SG游戏功能)
现在的变化是看不清楚SG功能什么寻求方法 临时模板标题是首当 性能mex1它正在寻求g(x) 然后XOR #include<cstdio> #include<iostream> ...
- JavasScript实现调查问卷插件
原文:JavasScript实现调查问卷插件 鄙人屌丝程序猿一枚,闲来无事,想尝试攻城师是感觉,于是乎搞了点小玩意.用js实现调查问卷,实现了常规的题型,单选,多选,排序,填空,矩阵等. 遂开源贴出来 ...
- C语言学习-数据结构 - 倒插法顺序表
// test20161106.cpp : Defines the entry point for the console application. // #include "stdafx. ...
- CreateMutex
C++ API CreateMutex 找出当前系统是否已经存在指定进程的实例.假设没有则创建一个相互排斥体.CreateMutex()函数可用来创建一个有名或无名的相互排斥量对象. HANDLE C ...
- Git基础教程
Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分, ...
- Hybrid
“榕树下·那年”移动app ( hybrid ) 开发总结 榕树下网站本身的技术人员并不多,所以app开发的任务就到了母公司盛大文学这边. 盛大文学无线业务中心负责这次具体开发任务. ...
- Android Intent 三解决
Intent的接收处理: 1.Receiver报名 这之前已经被引入 然后看看剩下的两个接收功能上面. scheduleReceiver scheduleRegisteredReceiver: sch ...
- [翻译]初识SQL Server 2005 Reporting Services Part 2
原文:[翻译]初识SQL Server 2005 Reporting Services Part 2 在Part 1文章中我们对SQL Server Reporting Services 2005(S ...
- python网络爬虫进入(一)——简单的博客爬行动物
最近.对于图形微信公众号.互联网收集和阅读一些疯狂的-depth新闻和有趣,发人深思文本注释,并选择最佳的发表论文数篇了.但看着它的感觉是一个麻烦的一人死亡.寻找一个简单的解决方案的方法,看看你是否可 ...
- 解决:错误的语法:”XXXX“必须是批处理中仅有的语句
原文:解决:错误的语法:”XXXX“必须是批处理中仅有的语句 SQL Server 数据库提示“错误的语法:”XXXX“必须是批处理中仅有的语句”报错的原因分析 解析:批处理必须以 CREATE ...