【发布时间】:2012-09-26 09:15:53
【问题描述】:
我已经为我的 winform 创建了一个安装文件。当我运行此安装文件时,应用程序将安装到用户指定的位置。安装还将一些 xml 文件复制到该位置。用户运行应用程序后,它会立即从 xml 文件中读取一些设置。
我想知道的是,因为xml文件的位置是灵活的(用户指定的),我们怎么知道读取哪个位置呢?我们如何在 winform 编码中指定它应该从安装位置读取?
【问题讨论】:
标签: c#
我已经为我的 winform 创建了一个安装文件。当我运行此安装文件时,应用程序将安装到用户指定的位置。安装还将一些 xml 文件复制到该位置。用户运行应用程序后,它会立即从 xml 文件中读取一些设置。
我想知道的是,因为xml文件的位置是灵活的(用户指定的),我们怎么知道读取哪个位置呢?我们如何在 winform 编码中指定它应该从安装位置读取?
【问题讨论】:
标签: c#
您是否查看过 Application.ExecutablePath 以了解您的 exe 运行时所在的路径,所以这将是您安装的基本目录。
String startingdir = Path.GetDirectoryName(Application.ExecutablePath);
foreach(String Filename in Directory.GetFiles(startingdir,"*.xml")
{
// process
}
【讨论】:
XML 文件是否复制到与您的可执行文件相同的位置?在这种情况下,您可以使用 WinForms 应用程序中的Application.ExecutablePath 来获取可执行文件的位置,并从那里创建 XML 文件的路径。
【讨论】:
我试过了
reader = new XmlTextReader(Application.StartupPath + "\\MyFile.xml");
而且效果很好!!
【讨论】:
我建议的方法是在安装程序中创建一个步骤,用户可以在其中设置文件的位置。把它放在注册表中。并让您的应用程序从注册表中读取它
【讨论】:
如果文件被复制到你的 exe 的工作文件夹,那么你可以用相对路径来寻址它们(不需要绝对路径)。
编辑:这是一个例子
XmlDocument document = new XmlDocument();
document.Load("filename.xml");
这段代码将尝试读取文件 filename.xml,该文件位于包含您的 exe 文件的同一文件夹中。
XmlDocument document = new XmlDocument();
document.Load("somefolder/filename.xml");
这将尝试从文件夹 somefolder 中读取文件 filename.xml,该文件夹位于包含您的 exe 的文件夹中
【讨论】: