博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
    总感觉题目起的有点别扭,但是不明白这是不是应该归因于这两种编译模式的区别,所以只能用这个长而晦涩的题目了。
我们在做一些应用程序时,经常会用XML文件存放一些程序的配置信息,甚或一些少量数据信息,而且有时候要提供给最终用户编辑这些信息的功能,用户所作的编辑也应该被永久保存在这个XML文件中。以C#的Windows窗体程序为例。
    在我程序中,开始用debug模式生成项目的可执行文件,而要读写的XML文件保存在和bin\debug\目录下,程序中用
doc.Load("SourceFile.xml");    获得XmlDocument对象doc,然后是对这个doc对象进行相应编辑操作,当编辑完成后,用doc.Save("SourceFile.xml");保存xml文件,这一切任何问题都没有,下次再启动生成的可执行文件并加载xml文件时,可以看到xml文件已经是被更新的了。
    然后再用release模式生成可执行文件,其余操作和debug模式下完全相同,同样还是doc.Load("SourceFile.xml");  doc.Save("SourceFile.xml");两个语句,结果却大相径庭,第二次启动可执行程序并加载xml文件时,SourceFile.xml并没有发生任何变化,而且在我的桌面上也就是“C:\Documents and Settings\HaoXiangShan\桌面”目录下生成了一个临时文件,这个文件保存的才是用户的更改结果。
    经过一番搜索和琢磨,感觉应该是文件的相对路径写法不对,或者说从一个方面也反应了release和debug的一个区别(没搞清楚原理,嘿嘿),在文章http://hi.baidu.com/dj2487/blog/item/41d50a9517e0ca0b7af48016.html中看到相对路径的写法,拿来试一下,把doc.Load("SourceFile.xml");  doc.Save("SourceFile.xml");改成doc.Load(AppDomain.CurrentDomain.BaseDirectory+"SourceFile.xml");  doc.Save(AppDomain.CurrentDomain.BaseDirectory+"SourceFile.xml");   结果问题就解决了,在debug和release下得到的结果完全一致。
    小结:看到网上说了很多release和debug的区别,没看明白到底怎么回事,不过本文中提到的这个问题我觉得的的确确在开发中需要注意的,以前只是在debug模式下做完程序了事,这次用到release,才发现原来之前从来没做一个完整的程序!哈哈,惭愧...