对,所以我有一个简单的应用程序,它包含一个日历,一个Set Event按钮和一个在WPF中使用DataTemplate填充的列表框。当我构建应用程序时,Events.xml文件是这样的:
<?xml version="1.0" encoding="utf-8" ?>
<events>
</events>
我通过代码向xml添加事件。 xml文件的最终结构如下
<?xml version="1.0" encoding="utf-8" ?>
<events>
<event Name="Some Name">
<startDate>20.03.2010</startDate>
<endDate>29.03.2010</endDate>
</event>
</event>
现在这是我的问题。如果我更新应用程序并使用Click Once进行部署并且应用程序自行更新,则会丢失列表,因为新文件为空。任何解决方法吗?
以下是我添加数据的方法:
var xDocument = XDocument.Load(@"Data\Events.xml");
xDocument.Root.Add(new XElement("event", new XAttribute("name", event.Name),
new XElement("startDate", startDate),
new XElement("endDate", endDate)
)
);
xDocument.Save(@"Data\Events.xml");
答案 0 :(得分:0)
如果是一个选项,我建议您不要将Events.xml
作为项目的一部分。如果你这样做,你可以:
如果Events.xml
不是项目的一部分,则Click Once将不会在更新时覆盖它。
答案 1 :(得分:0)
我发现了自己的问题。
这是我的方法。当应用程序第一次运行时,创建一个文件夹@C:\Program Files\<MyApp>\Data\
在那里添加Events.xml
文件,我总是在那里有文件。
唯一的缺点是用户需要在卸载时手动删除文件夹。
默认情况下,点击一次不会安装应用@C:\Program Files\<MyApp>\
。它安装到@C:\Users\<Username>\AppData\Local\Apps\2.0\
(在Windows 7下)。
任何解决方法吗?