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

3

我正在使用一个XML文件,该文件已添加到我的项目中,并具有以下属性:

Build Action : Resource
Copy to output directory : Copy Always

当可执行文件正在运行时,我需要用户能够编辑XML(添加、删除和修改节点)。这是可能的吗?还是我需要将构建操作更改为Content?谢谢。
编辑: 我已将其删除并重新添加为Content。 但是现在我有另一个问题:当我将其添加到项目中时,它会在应用程序根目录中查找它(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" />

对我来说似乎可以工作。尝试删除现有的输出目录并进行重建。另请参阅https://dev59.com/_HRB5IYBdhLWcg3w1Kn0。 - Bala R
1个回答

1

如果您想从磁盘加载并修改XML,请使用Build Action = NoneCopy = Copy Always

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

一个好的做法是将XML复制到%APPDATA%\Your appAPPDATA = 环境变量,使用System.Environment访问)。您可以在安装期间或第一次运行时执行此复制。 %APPDATA%用于运行时可更改的设置。

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

然后,您可以从%APPDATA%\Your app加载它并读取最新的设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接