WPF C#XML文件作为资源添加

时间:2011-04-17 15:03:58

标签: c# wpf xml resources build

我正在使用添加到项目中的XML文件,其中包含以下属性:

Build Action : Resource
Copy to output directory : Copy Always

然后,当可执行文件正在运行时,我需要用户能够编辑XML(添加,删除和修改节点)。可能吗 ?或者我是否需要将构建操作更改为内容?

由于

编辑: 我已将其删除并再次添加为内容。 但现在我有另一个问题:当我将它添加到项目中时,它会在应用程序根目录(WpfApplication1 \ WpfApplication1 \ myfile.xml)中查找它。 但是当我运行应用程序时,负责添加节点的功能正常,但它将文件保存到WpfApplication1 \ WpfApplication1 \ bin \ Debug \目录!因此,“真实的”myfile.xml不会更新。

我正在使用:

XMLHosts.Load("myfile.xml");
XMLHosts.Save("myfile.xml");

,数据源声明为:

<XmlDataProvider x:Key="MyfileData"  Source="myfile.xml" XPath="Books/Book" />

1 个答案:

答案 0 :(得分:1)

如果要从光盘加载xml(并修改),请使用Build Action = None和Copy = Copy Always。

您将遇到的问题是,如果您将应用程序安装到“Program Files”,除非您以管理员身份运行,否则您将无法在Windows Vista / 7上编辑该文件。 - “程序文件”仅在安装期间可编辑。

一个好的做法是将xml复制到%APPDATA%\您的应用程序(APPDATA =环境变量,使用System.Environment进行访问)。您可以在安装期间或首次运行期间预先创建此副本。 %APPDATA%用于运行时可更改设置。

如果您将xml标记为None + CopyAlways,则可以在应用程序启动时将其从执行目录复制到%APPDATA%\ Your app,如果它尚未存在于目标地址(如果尚未复制)。

然后,您可以从%APPDATA%\您的应用加载它并阅读最新设置。