检测新版本的逻辑

Dan*_*ell 2 c#

我有一些代码来检测是否有新版本可用。

涉及 6 个变量。其中 3 个是您安装的应用程序版本,另外 3 个是它从 Internet 更新中找到的版本号。

if (nMajor > nAppMajor || nMinor > nAppMinor || nBuild > nAppBuild)
        {
                //if update found:
        }
Run Code Online (Sandbox Code Playgroud)

例如从 1.1.3 版到 1.1.4 版,它一直在正常工作,但现在我正在测试 1.2.0 版。

它通知您的最新公开更新是 1.1.8。

如果您运行的是 1.2.0 版(就像我在测试时一样),它会在将 1.1.8 中的 8 读取为“较新”版本时检测到较新版本。我确信这是一个简单的解决方法,但我无法弄清楚逻辑。

Pat*_*ner 5

正如评论中指出的那样,如果比之前的版本大,您可以比较任何版本部分。虽然版本是分层的,因此如果市长相同,您只需要检查次要,如果市长和次要相同,则只需要检查构建。

框架中有一个专用的 Version 类,请参阅Version-ctor为您完成所有需要的比较逻辑:

using System;

public class Program
{
    public static void Main()
    {  
        var app    = new Version(1, 1, 8);
        var online = new Version(1, 2, 0);

        Console.WriteLine(app);
        Console.WriteLine(online);
        Console.WriteLine("online newer? {0}", app < online);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

1.1.8
1.2.0
online newer? True
Run Code Online (Sandbox Code Playgroud)