C# 部署Windows Phone更新时管理内部更改

C# 部署Windows Phone更新时管理内部更改,c#,windows-phone-7,C#,Windows Phone 7,在不久的将来,我将为我的WP7应用程序添加一些功能。如图所示,我将对数据库进行一些更改。在代码中,您将在何处以及如何处理这样的更新?我认为除了在“更新”上运行之外,没有其他方法可以在任何地方添加代码。它被硬连接到应用程序代码中 我想在隔离存储中设置一面旗帜。将其命名为v1.2UpgradeFlag,并将其设置为false。在App.xaml.cs中,检查该标志,如果该标志为false,表示升级尚未运行,请运行一些代码集,然后更新该标志 让代码像这样坐在那里的想法,可能不适用于多个版本之前有点笨重

在不久的将来,我将为我的WP7应用程序添加一些功能。如图所示,我将对数据库进行一些更改。在代码中,您将在何处以及如何处理这样的更新?我认为除了在“更新”上运行之外,没有其他方法可以在任何地方添加代码。它被硬连接到应用程序代码中

我想在隔离存储中设置一面旗帜。将其命名为v1.2UpgradeFlag,并将其设置为false。在App.xaml.cs中,检查该标志,如果该标志为false,表示升级尚未运行,请运行一些代码集,然后更新该标志

让代码像这样坐在那里的想法,可能不适用于多个版本之前有点笨重


编辑:我也很好奇如何管理应用程序的累积更新。所以在v1.2中,我有一些更新数据库模式的代码。如果有人在v1.3版时购买了该应用程序,该怎么办?我不想让他们“获取”v1.1,让应用程序运行1.2升级代码,以获取v1.3。

由于这是您第一次必须运行数据库升级,我会尝试向架构中添加一个额外的表来保存版本信息。如果在尝试检索数据时出现NotFound错误,则您知道需要运行升级。这样,您就可以在后续版本中管理流程,而无需管理额外的文件

为了进行累积更新,可以使用相同的机制。您可以维护一个将数据库从v1更新到v1.2的方法,另一个从1.2更新到1.3的方法,等等。维护升级过程的方法可能类似于以下伪代码

var currentDbVersion = GetDbVersion();
while(currentDbVersion < currentCodeVersion)
{
    switch(currentDbVersion)
    {
        case 1.2:
            RunUpgradeFrom12to13();
            break;
        case 1.3:
            RunUpgradeFrom12to13();
            break;
        default:
            break;
    }
    currentDbVersion = GetDbVersion();
}
var currentDbVersion=GetDbVersion();
而(currentDbVersion
这将允许您从任何以前的版本升级到当前版本,而无需维护多个代码路径(因为1.0到1.2的升级永远不会更改,并且您应该知道每个累积步骤的开始位置)


可能还有更明智的想法,但这是我想到的第一件事。

我意识到这并不是OP想要的,但这样做可以让跳过某个版本的用户升级到最新版本,而不必维护从10升级到最新(),从12升级到最新(),等等。方法。这似乎与我当时的想法类似。我喜欢“UpdateFromxtolate()”的想法。我将不得不考虑这一点,我将如何做,但这将引导我在正确的方向。感谢在我在OP中链接的另一个帖子中,我偶然发现了这个链接:。这提供了您建议的确切场景。我需要看到这个链接中的示例,以了解多版本更改是如何发生的。现在要简单得多:)