2012-09-21 74 views
-1

这是一个WPF应用程序。文件路径

我试图加载一个XML文件,如下所示:

XmlDocument doc = new XmlDocument(); 
doc.Load("../../doc/test.xml"); 

但是当我发布使用Clickonce,它将无法找到该文件。

我应该如何获得当前位置,例如basedir

谢谢。

回答

0

尝试用,

XmlDocument doc = new XmlDocument(); 
doc.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\test.xml"); 

Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly()位置)的可执行文件位置的这种返回路径。

0

尝试:

AppDomain.CurrentDomain.BaseDirectory 

这将让基本目录

+0

BaseDirectory可以在运行时设置,因此不能保证是有效的。 –

0

你的意思是System.Reflection.Assembly.GetExecutingAssembly().Location

0

如果XML文件是某种形式的用户可配置输入,那么该文件应该位于Windows常用应用程序数据文件夹中(请参阅Environment.SpecialFolder.CommonApplicationData)。因此,路径不是相对的,而是由部署代码“知道”的已知基础构建的路径。

我喜欢创造Environment.SpecialFolder.CommonApplicationData一个文件夹,我的公司和应用程序是这样的:\\

也许我们需要更多的细节。我希望这有帮助。