Management Console ERP项目开发辅助工具 正确的方法+适当的工具使做项目的效率高而且问题少
Management Console这个工具已经使用大半年了,期间经历了一些调整和修复。起初它是由一个ORM的扩展工具而来,后来经过众多工具的组合和拼接,逐渐庞大起来。在今年八月份就想到使用一个插件框架来把它们都集成起来,请参考文章《Management Console 工具管理类软件通用开发框架(开放源码)》来了解这个框架,这个框架是开源的,你可以到epn.codeplex.com中获取它的代码。我也用这个框架开发出了Data Loader文档处理程序的主界面,请参考《知识管理系统Data Solution研发日记之二 应用程序系列》来了解它的应用。
Management Console的主界面如下图所示
一共有十九个应用程序实用工具,它们在代码生成,报表制作,数据导入/导出,解决方案转换,资源翻译等方面发挥了重要的作用。
DataSet Reader 数据集读取
在用代码制作报表时,对数据进行SELECT之后,通常还会进行一些分组或是调整,以制作符合要求的报表。我知道有些时候,直接在SQL Server中进行应用聚合函数会使效率高很多,但是有些时候还是会以代码来完成。当把数据展现给报表组件(ReportViewer,CystalReportViewer)之前,我很想知道内存中的数据是怎样的,于是会把它写到文件中,然后用这个工具来查看DataTable或DataSet的值。在报表中检查到问题后,直接用这个工具打开数据表,以对比发生问题的原因。虽然这个工具只有简单的几行代码,但是我认为在报表数据诊断方面,它的作用非常大。源代码只有下面几行
OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { DataSet ds = new DataSet(); ds.ReadXml(dlg.FileName); dataGridView1.DataSource = ds.Tables[0]; rtfXml.Text = File.ReadAllText(dlg.FileName); txtFile.Text = dlg.FileName; }
Translation 翻译
我们自小学会了简体汉语,进入初中后又知道有古汉语,进而学习文言文,进入大学后又知道了有台湾,香港,澳门这些地区使用繁体中文,如果没有计算机,您想知道一个简体字如何用繁体来写,还真是个麻烦。Office 软件内置了简体与繁体的转换功能,现在有了.NET,你可以使用下面的代码,把一个简体字转化为繁体字
public string translation(string simpleChinese) { return (Microsoft.VisualBasic.Strings.StrConv(simpleChinese as string, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0)); }
再进化一步,做成一个工具,方便重复使用
当在Simplified文本框中输入”工作单”后,应用translation函数,自动转化为出下面的繁体文字。
String Builder 字符串转化
在拼凑SQL写程序的那段日子里,这个工具的价值是很大的。试想一些SQL语句,你要转化成.NET代码,也就是转化为string类型,在外套上引号,可以当你的SQL语句有很多行的时候,给它们套上冒号就要耗费一些时间。如果有这个工具,你可以把SQL语句拷贝到上面的文本框中,点击转化,则自动产生下面的StringBuilder类型的代码片段,都已经写好了,直接拷贝到代码中就可以用了。而且这个工具可以支持VB和C#两种语言的输出。后来还知道有这样的写法
在SQL语句的外面套一个@,这样就可以产生多行的语句,而不用在每一行末尾加引号。尽管如些,但是这个工具还是很好用,推荐给你这个思路,如果想做出它的实现代码来,半个小时内应该可以完成。
License Generator 许可证产生器
当软件做好了之后,加上了必要的许可验证机制,可以用这个工具来产生软件必须的许可证。这个可以控制软件的行为,功能是否可用。虽然有条件编译,运行时类型解析,动态加载这些有利于控制软件功能点的方法,不过都不如这种方法简单灵活。举例说明,专业版的EPN框架不允许部署到虚拟机中,而只有企业版才可以,我在许可证生产器中中加一项AllowRunVirtualMachine选项,产生专业版的license文件设置它为false,表示不允许运行于虚拟机中。产生企业版的license文件中,则设置AllowRunVirtualMachine=true,以表示允许运行于虚拟机中。同一套代码,根据不同的license文件,决定功能是否可用,这种思路可以帮你设计功能点的限制与许可,实现起来方便。
Query Generator 查询生成器
如果你维护过ERP系统,有过大量的表格及其数据关系的维护体会,你肯定会喜欢这个工具。把数据从一个数据库搬动到另一个数据库,这个轻量级的SQL Server 导入导出工具,会相当的方便。选择需要导出数据的表格,生产UPDATE或INSERT语句,在到指定的数据库中执行一下生成的SQL语句,数据就被放到了指定的数据库中。比SQL Server 的导入导出工具方便,小巧,虽然功能没有它那么强大。
Lookup Generator 查询生成器
Report Generator 报表生产器
Query Lookup 查询导出
这三个系列的工具,是对上面的Query Generator的简化,导出指定数据库中的查询,报表设置。
Smith Builder 代码生成工具
在以前的文章中,我曾经开放了Smith Builder的源代码。这是一个基于Code Smith的代码生成器。当您在Code Smith 中设计好模板后,再用这个工具调用模板,传入必须的参数,以产生代码。这个工具可以简化Code Smith的使用。比如,左边的树视图,我把当前选择的数据表都列出来,把多个表名传到指定的模板中,在Parameter区域中指定参数,会可以快速生成多个数据表的模板代码,以达到快速批处理的目的。Copy Text Only表示是只拷贝代码片段,不拷贝文件,如果不打勾,则表示会生成多个接口或实现文件,而且会自动拷贝到剪贴板中,你只要在Visual Studio中点Paste就可以了,经过Smith Builder的简化处理,是不是简单很多了。从代码的角度来理解,看起来是这样的
btnScriptTable.PerformClick(); if (generatedFiles.Count > 0) { if (chkCopyTextOnly.Checked) { TextReader tr = new StreamReader(generatedFiles[0]); string template=tr.ReadToEnd(); tr.Close(); Clipboard.SetText(template, TextDataFormat.UnicodeText); } else { StringCollection fileDropList = new StringCollection(); fileDropList.AddRange(generatedFiles.ToArray()); Clipboard.SetFileDropList(fileDropList); } }
经过这二个功能的包装(多表选择,多文件批处理生成),应该是比Code Smith要方便很多了。
Solution Converter 解决方案转化
经常在网上找一些资料,也会下一些代码回去实验一下。也经常会遇到这些代码是用不同版本的Visual Studio开发。虽然我们开发人员是穷人,但是所拥有的软件却是最富有的,从Visual Studio到SQL Server,再到Power Designer,你想要的,基本上都有了。但是,这么多软件也是个麻烦,比如,你不太愿意想在自己的电脑上,装上Visual Studio 2005,Visual Studio 2008,Visual Studio 2010,这三个软件太耗费硬盘空间了。尽管新版本的Visual Studio会识别和转换旧版本的Visual Studio解决方案文件,但是的反过来就不行了。好了,有了这个工具,你机器中只装一个你喜欢的Visual Studio 2008或是Visual Studio 2010,任何的解决方案文件都可以经过这个工具的转换,变成你需要的版本。这个工具还有一个好处是,当我用Visual Studio 2010开发好了系统,同时希望也提供Visual Studio 2008的解决方案文件,老的办法是创建一个Visual Studio 2008的解决方案文件,一个个的Add existing item。这样会耗费一些精力和时间。有了这个工具,你可以轻易的为你的项目源码,产生多个版本的Visual Studio解决方案文件。
这个工具来源于codeproject,请到该网站搜索它的源代码与执行文件。
Code Conversion VB与C#代码转化
如果你是C#程序员,你也会经常碰到一些好的代码是VB写的,虽然读懂它们并不困难,一致的.NET Framework API让C#程序员读懂VB程序轻松了很多,但是,有时候你想直接Copy到项目中去用,这样一行一行的转化也会消耗一些时间,而且容易出错。网上有很多免费的VB与C#代码转化的工具,可是要联机才行。像我这样的人,经常会无法连接到互联网,所以需要一个脱机运行的VB与C#代码转化工具,于是就有了这个工具的产生。它的基本原理是复杂的,你可以参考# Develop来学习和了解,如果要集成到项目中去,从下载的源代码中找到ICSharpCode.NRefactory项目的例子程序,这个工具就是取自于它。再进一步的,我需要做到整个VB项目文件(.vbproj)转化为C#项目文件(.csproj),这也没有多大的难度,用一个XmlDocument读项目文件的VB源代码,然后逐个代码文件的转化,最后生成csproj就可以了。
这个功能还会涉及到多个版本的Visual Studio的项目文件与解决方案文件的格式问题,stackoverflow上面有介绍这个主题的文章,也可以参考前面提到的开放源代码的Solution Converter来学习不同版本的Visual Studio他们产生的文件格式的不同,解决了这个问题,一个VB与C#项目转化的软件基本上就完成了。在Google上搜索了一下,目前能找到的一个软件VB Conversion,也只支持到了Visual Studio 2008。
孟子说,不积跬步,无以致千里,不积小河,无以成江流。希望这些工具和思想可以帮助到你。