WPF C#XML文件添加为资源
问题描述:
我使用添加到我的项目具有以下属性的XML文件:WPF C#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" />
答
如果你想从磁盘加载的XML(和修改),利用生成操作=无和复制=始终复制。
您遇到的一个问题是,如果您将应用程序安装到“Program Files”,除非以管理员身份运行,否则无法在Windows Vista/7上编辑该文件。 - “程序文件”仅在安装期间可编辑。
一个好的做法是将xml复制到%APPDATA%\ Your app(APPDATA =环境变量,使用System.Environment进行访问)。您可以在安装期间或首次运行期间预制此副本。 %APPDATA%用于运行时可更改设置。
如果您将xml标记为无+ CopyAlways,则可以将其从执行目录复制到%APPDATA%\您的应用程序启动时的应用程序(如果尚未存在目标地址(如果尚未复制))。
然后,您可以从%APPDATA%\您的应用程序加载它并阅读最新设置。
似乎为我工作。尝试删除现有的输出目录并执行重建。另请参阅http://*.com/questions/495505/copy-always-to-output-directory-does-not-work – 2011-04-17 15:07:18