【问题标题】:WPF C# XML file added as resourceWPF C# XML 文件添加为资源
【发布时间】:2011-08-07 08:17:42
【问题描述】:

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

Build Action : Resource
Copy to output directory : Copy Always

然后当可执行文件运行时,我需要用户能够编辑 XML(添加、删除和修改节点)。可能吗 ?还是我需要将 Build Action 更改为 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" />

【问题讨论】:

标签: c# wpf xml resources build


【解决方案1】:

如果您希望从光盘加载(并修改)XML,请使用Build Action = NoneCopy = Copy Always

您将遇到的一个问题是,如果您将应用程序安装到“程序文件”,您将无法在 Windows Vista/7 上编辑该文件,除非您以管理员身份运行。 - “程序文件”只能在安装过​​程中编辑。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多