我有一个Windows Phone应用程序,它依赖于随应用程序打包的XML数据文件。当应用程序第一次在手机上运行时,我将文件加载到独立存储中。将文件加载到隔离存储后,应用程序将使用隔离的存储版数据。在我的应用程序的下一个版本(市场更新)中,XML文件将包含更多元素,如何在每次应用更新时更新数据文件(市场上的新版本)?
我以为我可以在隔离存储中更改文件名,但这会留下垃圾。我还可以在加载XML文件时检查异常,但还有其他更优雅的方法吗?每次我的应用程序运行时,我都不想检查隔离存储中的旧文件。
理想的情况是放置一段代码,当新版本的应用程序加载到手机上时会执行一次,有没有办法做到这一点?
答案 0 :(得分:1)
据我所知,在安装/更新应用程序后的第一次运行时,没有“开箱即用”的事件会运行一次。
你必须标记自己的运行,就像你已经说明的那样(保存当前版本,比较每次运行应用程序的版本,看看应用程序是否已更新!)
答案 1 :(得分:0)
我认为我现在明白你想要的东西。
请注意,资源的名称类似于/ DllName; component / Folder / ResourceName
答案 2 :(得分:0)
这是我做的:
在我的DataLayer
类的构造函数方法中,我添加了以下代码:
private bool AppIsOld
{
get
{
string storedVersion = GetStoredAppVersion(); //stored previously "seen" version
string currentVersion = GetCurrentlyRunningAppVersion();
return !(storedVersion == currentVersion);
}
}
private string GetCurrentlyRunningAppVersion()
{
var asm = Assembly.GetExecutingAssembly();
var parts = asm.FullName.Split(',');
return parts[1].Split('=')[1].ToString();
}
然后我运行以下检查:
if (AppIsOld)
RefreshResources(); //do whatever to refresh resources
GetCurrentlyRunningAppVersion()
功能的代码取自here。
这个解决方案不是我想到的,因为它在每次调用类构造函数时运行,而我想要在版本更新时运行一次。