前俩天的最后一次签入,将DNN C#更新到5.6.2之后,这个版本的任务也宣告完成他的使命了,下一次DNN的发布就会基于C#了,特地在此留念。

回顾

    历时一年多的维护,很累,也很开心,能够和大家一起共同学习和交流。几年前也尝试过几次将DNN翻译成为C#版本,但是最终因为没有很好的解决方案和维护升级的办法而放弃,因为转换成一个版本可能在努力的情况下花上几个月的时间是可以完成的,但是几个月之后,DNN官方的版本可能已经更新好几次了,那我的工作岂不是还没有开始就已经结束了,无法保持俩个版本之间的一致性。后来接触的解决方案多了,就一直在思考一个问题,何为升级?既然软件的升级是持续性的,那升级的代码必然是可以跟踪的,由此思路逐渐的形成了一个维护版本升级的方案。当然,第一步还是要进行一次完整的转换,说句实话,这个任务很考验人的意志力,文件太多,代码太多,而且由于vb.net有着一个”强大”的编译器,导致vb.net的代码写法多种多样,当尝试着去解决一个又一个稀奇古怪的错误时,太揪心了。过了很久才第一次看见"build Successful”,那种兴奋无以言表,当然随之而来的痛苦更纠结。编译成功了,就开始迫不及待的打开浏览器,准备欣赏我的“杰作”,太完美了,铺天盖地的异常,让我求生不得,求死不能。于是一次次的调试,一次次的分析异常,直到安装界面能够出现,直到看到“安装完成”,直到打开了久违的首页,直到可以登录,编辑,直到“差不多”可以用了。成功了!不亚于和女朋友第一次牵手的感觉。接下来的任务就相对比较轻松了,不断的测试,修改,提交。

    现在该开始升级了,当我完成了整个转换的过程后,和我预想的一样,DNN已经升级了2个版本了,这里就需要祭出版本维护的终极武器了,对比工具。开源阵营里有WinMerge, 商业软件里有BeyondCompare, 将DNN官方版本的文件进行逐一的比对,能够查看到这次升级里哪些文件做过了修改,改了些什么地方,将更改的代码复制到C#版本里对应的位置,并修改成C#版本,就是这样,开始跟踪维护代码,基本上DNN每一次的升级只需要花费1-2天的时间,就可以完全跟踪到C#版本上。

    后面的事情就简单了,持续进行就可以了。期间和Shaun Walker及Scott Willhite的沟通,并正式把该版本提交到官方目录中,当然,DNN决定6.0开始改由C#开发,是我意料未及的,并且非常的感谢DNN团队能够做出如此精彩的决定,虽然对于大家来说可能没有什么,但对我来说,意义重大!

技巧

   如何转换?这里主要用SharpDevelop的转换工具和非常好用的DeveloperFusion的工具,文后我附了一个比较简陋的VS插件(详见文后),可以方便的进行代码片段的转换。

    如何升级?一直使用BeyondCompare进行比对和升级。

        第一步:比较差异;

        image 
        image

        第二步:复制代码到C#版本中;

        image

        第三步:转换代码成为C#代码。

        image   image

 

小记

    虽然DNN C#这个项目可能不再更新了,但是我会一如继往的研究DNN,研究.net,研究技术,要么不做,要么就做的更好一些。

附件

    Converting.zip(基于DeveloperFusion Service)

    1. 解压文件到My Documents\Visual Studio 2010\Addins;(如果是VS2008,则放到VS2008的目录下)

    2. 打开VS,选中需要转换的代码;

    3. 选择 选项-Converting, 即可将vb.net代码转换成为c#.