nant的一些经验,个人认为比较有价值。看看是否对你有帮助?
最近在做日构建工作时遇到一些很奇怪的问题,为什么说是奇怪呢?因为日构建是实现自动编译和测试,所们我们首先要实现的是能编译.
我写的测试程序在VISUAL STUDIO IDE中编译运行非常.证明程序没有大问题,至少没有编译错误。测试程序是实现多语言的,利用.Net的多语言解决方案做的。
但是,当我用写好的Nant编译就没这么好了,经常性报告程序错误,不能继续编译,错误都是出在资源文件.
刚开始还怀疑是NANT的BUG,经过长时间的研究和尝试发现及总结,发现这些问题是我们平时写程序时不注意细节导致的,因为IDE比较智能,一些普通的错误或者小问题,IDE都能很好的处理,MICROSOFT毕竟不同凡响,VISUAL STUDIO IDE当然也强了.....其实现在觉得Nant也不错
以下是我总结的一些问题及其解决办法,如果你也遇到这些问题,以下的答案肯定对你有帮助。
请看下面的问题所在
问题一:SOURCESAFE中存在垃圾
因为NANT是把从SOURCESAFE中的代码全部拉下来,然后把所有*.CS文件全部编译,但我们的SOURCESAFEA中存在一些没用的或者已不再使用的文件,这些文件并不包含在我们的工程中,所以IDE不报错,但是用NANT编译这些文件肯定会出错的.
解决方案:
建议删除该删除的文件,并彻底从SOURCESAFEA中删除.
问题二:缺少XML标头
<?XML VERSION="1.0" ENCODING="UTF-8"?>
因为资源文件是XML格式,但是在我们的代码中很多资源文件都是上面这个头.其实作为一个XML文件,如果没有标头肯定是不符合常理的.
解决方案:
查找现有资源文件代码,把缺少XML标头的加上,并在以后加资源文件时注意这一点.
问题三:资源文件的命名规则
此问题一度导致我们对NANT丧失信心,一直认为是NANT的BUG.
其实.NET对资源文件的命名是有规定的,下面有命名的详细说明以及区域性的含义.据约定,语言标记包括两个小写字母,国家(地区)标记表示特定的区域性.由两个小写字母-两个大写字母组成的,我们的四字母以上的资源名都没有大写.
如: History_Banner.asp.zh-chs.resx,History_Banner.aspx.zh-cht.resx
按照规则应该为History_Banner.asp.zh-CHS.resx,History_Banner.aspx.zh-CHT.resx
因为NANT对大小写敏感,所在一直在编译上出问题,编译提示成功,但运行程序时却提示找不到相应的资源。
解决方案:
查找现有资源文件,把*.zh-cht.*和*.zh-chs.*的文件名改为 *.zh-CHT.*和*.zh-CHS.*,并在以后加资源文件时注意这一点。
这种命名也符合微软的资源文件命名规则,虽然这种命名在IDE中没有问题,但用规范编程是一名优秀程序员的成功之道。
问题四:提示找不到资源文件或某个资源文件可能没有绑定到exe程序中。主要是指aspx页面
我做了三种语言,每个有资源的aspx页面共有4个*.resx文件。*.resx、*.en.resx、*.zh-CHT.resx、*.zh-CHS.resx不知什么原因,*.resx文件没有任何内容,没有内容的意思是指用记事本打开没有一个符号。作为一个XML文件,它是不合法的,所以用nant编译也不能通过,所以我在csc时只选择了,*.en.resx,*.zh-CHT.resx,*.zh-CHS.resx。这样就有了上面的错误。
解决方案:
只要把*.resx文件补上一个空的xml结构文件,在nant的csc中的resources中<include file=*.resx>这样就没有上面的问题了。
问题五:提示Global.asax文件错误
装了visual studio .net 2003和visual studio .net 2005 beta1,在同一个操作系统下,运行nant编译web工程,就有这个错误。发现是nant调用了.net framework 2.0。而我的代码是framework 1.1的。
解决方案:
卸载visual studio .net 2005 beta1就可以了。
以上是我在运用nant时遇到的一些问题和解决办法,并实这些问题和解决办法仅代表我个人的意见,欢迎鲜花和鸡蛋。同时欢迎交流。
(注:内容不多,但写的很乱,想了很久想把它写好了,可无奈语文水平就这个样,如果看不懂或看不明的,可以留言或给我email吧!)
附:区域性(摘自MSDN)
de 德语
de-AT 奥地利德语
de-CH 瑞士德语
en 英语
en-AU 美国英语
en-AU 澳大利亚英语
en-CA 加拿大英语
fr 法语
SP西班牙语
zh-CHS 中文简单
zh-CHT 中文繁体