我有一些代码来检测是否有新版本可用。
涉及 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 读取为“较新”版本时检测到较新版本。我确信这是一个简单的解决方法,但我无法弄清楚逻辑。
正如评论中指出的那样,如果比之前的版本大,您可以比较任何版本部分。虽然版本是分层的,因此如果市长相同,您只需要检查次要,如果市长和次要相同,则只需要检查构建。
框架中有一个专用的 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)