2011-04-17 69 views
3

我使用添加到我的項目具有以下屬性的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" /> 
+0

似乎爲我工作。嘗試刪除現有的輸出目錄並執行重建。另請參閱http://stackoverflow.com/questions/495505/copy-always-to-output-directory-does-not-work – 2011-04-17 15:07:18

回答

1

如果你想從磁盤加載的XML(和修改),利用生成操作=無和複製=始終複製。

您遇到的一個問題是,如果您將應用程序安裝到「Program Files」,除非以管理員身份運行,否則無法在Windows Vista/7上編輯該文件。 - 「程序文件」僅在安裝期間可編輯。

一個好的做法是將xml複製到%APPDATA%\ Your app(APPDATA =環境變量,使用System.Environment進行訪問)。您可以在安裝期間或首次運行期間預製此副本。 %APPDATA%用於運行時可更改設置。

如果您將xml標記爲無+ CopyAlways,則可以將其從執行目錄複製到%APPDATA%\您的應用程序啓動時的應用程序(如果尚未存在目標地址(如果尚未複製))。

然後,您可以從%APPDATA%\您的應用程序加載它並閱讀最新設置。