我正在使用Windows CE 6.0。我正在开发一个需要读取放在我的可执行文件(foo.exe)旁边的XML文件(bar.xml)的应用程序。
我尝试使用以下方法访问它,在我的Main()之后调用:
private void ParseXmlFile(string _sFileName)
{
XmlDocument l_doc = new XmlDocument();
l_doc.Load(_sFileName);
}
现在,从Windows CE控制台启动我的应用程序:
foo.exe bar.xml
我收到的只是一个例外说明:Cound找不到文件'\ 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');
它有效,但对我来说似乎不太方便。还有其他想法吗?
答案 0 :(得分:2)
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
将程序集的位置作为网址返回,但System.Reflection.Assembly.GetExecutingAssembly().Location
返回完整路径或UNC位置(请参阅here)。结果您的代码可能是这样的:
var fullPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
var fullFileName = System.IO.Path.Combine(fullPath, _sFileName);