【发布时间】:2015-08-25 10:00:03
【问题描述】:
我使用的是 Windows CE 6.0。我正在开发一个需要读取 XML 文件 (bar.xml) 的应用程序,该文件位于我的可执行文件 (foo.exe) 旁边。
我尝试使用以下方法访问它,在我的 Main() 之后调用:
private void ParseXmlFile(string _sFileName)
{
XmlDocument l_doc = new XmlDocument();
l_doc.Load(_sFileName);
}
现在,当从 Windows CE 控制台启动我的应用程序时:
foo.exe bar.xml
我收到的只是一个异常声明:找不到文件 '\bar.注意这里的“\”。我也试过了:
foo.exe bar.xml
foo.exe .\bar.xml
foo.exe ./bar.xml
我的应用程序在\Hard Disk\ftp\Test\下
如果我将文件放在“硬盘”文件夹下,一切都很好。当然,我不希望我的文件在这里。如何告诉我的应用程序在与我的应用程序相同的文件夹中查找此文件?
编辑:
在@Thomas 发表评论后,我检查了我的路径,发现我确实在正确的文件夹中(\Hard Disk\ftp\Test)。
我不得不使用下面的代码来获取路径(因为 Compact framework 2.0):
string l_sFullAppName = Assembly.GetCallingAssembly().GetName().CodeBase;
string l_sFullAppPath = Path.GetDirectoryName(l_sFullAppName);
XmlDocument l_doc = new XmlDocument();
l_doc.Load(_l_sFullAppPath + '\\bar.xml');
它有效,但对我来说似乎不是很方便。还有其他想法吗?
【问题讨论】:
-
检查Application.executablepath,如果您的应用程序真的在您认为的位置执行。
-
这是一个控制台应用程序,我不能拥有 Application.executablepath。我尝试关注this,但我无法获得 Location 属性。我不知道为什么。我的 System.dll 参考位于“C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\System.dll”下,并且确实在 2.0 版中。
-
@leppie 我指定了 c#-2.0,因为我绝对需要框架 2.0。错了吗?
-
还有这个 :
Environment.GetCommandLineArgs()[0];? -
我没有,估计是因为我用的是compact framework的framework 2.0。
标签: c# path windows-ce c#-2.0 relative-path