在winform程序中添加一个xml文件,这个xml文件用来记录登录信息如用户名,然后还有其他一些程序运行时用户所设定的信息,主要是想读写这个xml文件来是实现特定信息的记忆功能。在调试的时候是没有问题的,程序运行正常,但是在打包安装之后,打开主程序,报错说:
An unhandled exception('System.IO.FileNotFountExcpetion') occured in MRRProject.exe[576].
如果把对xml文件的操作注释掉,安装后程序运行正常,添加对xml的操作后就报这个错。
对xml文件的操作代码如下:
                XmlDocument doc = new XmlDocument();
                doc.Load(@"XMLFile1.xml");
                XmlNodeList nodes = doc.GetElementsByTagName("username");
                textBox1.Text = nodes[0].InnerText;
我在打包的时候已经包括了所有的文件了,为什么会找不到文件呢?

解决方案 »

  1.   

    doc.Load(@"XMLFile1.xml"); 你写的是相对路径,程序会在你exe的工作目录(注意是工作目录,不一定和exe同目录)下寻找这个xml文件,找不到的话就会抛一个FineNotFound的异常,你的程序里又没有捕获这个异常,所以程序崩溃退出。
      

  2.   

    FineNotFound  ->  FileNotFound
      

  3.   

    在调试的时候,XMLFile1文件与exe的是放在同一个文件夹里的bin.debug,而安装后exe是在setup目录下的,请问一下如何才能让设置xml文件的路径呢?应该是用相对路径的,因为我没有控制用户的安装路径。谢谢
      

  4.   

    string str = Assembly.GetExecutingAssembly().GetName().CodeBase; 
                    if (str.ToLower().IndexOf("file:///") >= 0) 
                    { 
                        str = str.Substring(8, str.Length - 8); 
                    } 
                    string path = System.IO.Path.GetDirectoryName(str);
    doc.Load(path+@"\XMLFile1.xml"); 
      

  5.   


    那你安装以后,exe和xml文件的相对位置能说下吗?  不然没法告诉你怎么写路径
      

  6.   


    安装的时候默认为C:\Program file\MRR,安装后这个目录里面包含了所有的文件,这里面有18个dll文件,一个MRRProject.exe.config文件,一个tlb文件,一个olb文件,没有子文件夹,也没有xml文件,系统怎么放置xml文件似乎看不出来。
      

  7.   

    你要是把XML打包进去了那不可能你安装目录里会没有这个文件!
    路径的代码我已经给你了!
      

  8.   


    那有可能你没有把那个xml包含在打包工程里