【转】C# winform程序发布后找不到数据文件(xml,ini,etc...)的解决
来源:互联网 发布:2017美工电脑配置要求 编辑:程序博客网 时间:2024/06/02 14:57
自已遇到了这个问题,情况和这位仁兄的差不多:“winform程序发布后,找不到菜单存储文件(xml文件)”。
情景再现:在c#winform项目中建立一个XML数据文件在/data/demo.xml中,另有一些图片文件在/images/目录中,发布后安装在其它电脑上面,调试时没有问题,运行时会报“未找到路径:C:/Documents and Settings/we/Local Settings/Apps/2.0/PXXV1GOP.VTC/…”之类。但是图片的调用没有问题。
解释一下几个相关问题:
- 为什么会安装在这么奇怪的路径中?
这个问题可能要问MS了,不过从vs2003以来,C#的 winform发布后的程序都会自动安装在X:/Documents and Settings/用户名/Local Settings/Apps/[.net版本]…的目录中,可能是为了方便程序的升级、卸载、版本回滚等,可以跟vista以后的平台配合。
- 程序调试时如何调用本地XML文件?
如果XML数据文件位于/Data/demo.xml,那在程序调试的时候,应用程序的运行地址在:/bin/Debug/App.exe,所以引用时应该这样写:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(@"../../Data/demo.xml");
也可以写成:objXmlDoc.Load(Application.StartupPath.ToString()+@"../../Data/demo.xml");
Application.StartupPath会返回应用程序所以在的位置。
- 程序发布后为何找不到XML文件?它到哪去了?
跟据MS的思路,XML属于“数据文件”,而图片等属于“资源文件”,安装后所有的数据文件将被安装后其它目录,而资源文件会被放置到程序安装路径中。右键项目,点“属性”,在发布选项卡中点“应用程序文件…”会看到所有除了.cs的文件的发布状态,png是包括(自动发布),而xml是数据文件(自动发布)。
- 如何让程序在发布后找到数据文件?
使用Application.CommonAppDataPath,它会自动指向程序的数据目录安装位置:
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(Application.CommonAppDataPath+@"/Data/demo.xml");
但是如果是本机开发,Application.CommonAppDataPath在调试时不会指向你的项目目录,而是指向X:/Documents and Settings/用户名/Local Settings/Apps/[.net版本]…,所以在调试(Debug)时不能用它来加载XML文件。
- 如何在不改变代码的情况下调试和发布我的项目?
可以用#if DEBUG,使用如下代码,可以看到如果不是Debug状态,加载数据文件的语句是灰色的,是不被执行的:
当然,您也可以使用开始提到的那贴子中的方法:
1、首先打开项目属性---> 发布---> 应用程序文件---> 把frame/mune.xml文件的发布状态改为包括。
2、在引用路径的时候这么写“string strMenuXml=Directory.GetCurrentDirectory()+"//frame//mune.xml "; ”
- 【转】C# winform程序发布后找不到数据文件(xml,ini,etc...)的解决
- winform程序发布后找不到数据文件(xml,ini,etc...)的解决方法
- c# winForm 发布程序
- .net 程序发布后xml文件找不到的两种解决方法
- 发布C# WINFORM 程序
- web项目发布后 找不到xml文件?
- C#为winForm程序打包发布应用
- C# winform 程序完全退出问题的解决
- [转]解决C# WinForm 中 VSHOST.EXE 程序不关闭的问题
- 解决C# WinForm 中 VSHOST.EXE 程序不关闭的问题(转)
- 解决C# WinForm 中 VSHOST.EXE 程序不关闭的问题(转)
- WinForm程序的安装程序发布
- Visual Studio C# 修改后的程序发布
- myeclipse发布后classes文件夹里找不到xml等配置文件
- C#数据文件与程序的关联
- Eclipse RCP程序发布后提示找不到application id的问题和解决方法
- winform c#写ini文件
- WinForm C#写INI文件
- 如何配置 Outlook Web Access 中的 Web 部件
- InstallShield创建自定义对话框 实例
- 使用oledb访问Oracle,ExecuteNonQuery是否立刻提交呢,是否会造成死锁
- VC6环境下USB编程链接错误解决办法
- Dom4j下载及使用Dom4j读写XML简介
- 【转】C# winform程序发布后找不到数据文件(xml,ini,etc...)的解决
- A Proof That P Is Not Equal To NP?
- Socket通信-web服务器基本原理(静态)
- pku2409Let it Bead
- 破解Red Hat Enterprise 4的root密码
- 配置ASP.NET网站使用AppFabric Caching存储Session数据
- WebView,WebViewClient,WebChromeClient区别
- 链式队列一些操作
- Squid-3.1.6在CentOS上编译出错提示缺少libltd库