You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#在下载前获取GitHub上exe文件的版本信息

无需下载exe即可获取GitHub上的文件版本信息方案

方法一:仓库中维护轻量版本元文件

这是最直接的方案,在exe同目录下新增一个极小的版本文件(如version.txt),每次更新exe时同步修改该文件的版本内容。代码先请求这个小文件拿到版本号,再和本地版本对比决定是否下载。

using System.Net;
using System.IO;

// 替换为你的版本文件GitHub raw地址
var versionFileUrl = $"https://raw.githubusercontent.com/{get-id}/AutoUpdate/main/version.txt";
var localExePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "hello.exe");
string remoteVersion = null;

// 获取远程版本号
using (var wc = new WebClient())
{
    try
    {
        remoteVersion = wc.DownloadString(versionFileUrl).Trim();
    }
    catch (WebException ex)
    {
        Console.WriteLine($"获取远程版本失败:{ex.Message}");
        return;
    }
}

// 获取本地已安装exe的版本(如果存在)
string localVersion = null;
if (File.Exists(localExePath))
{
    var versionInfo = FileVersionInfo.GetVersionInfo(localExePath);
    localVersion = versionInfo.ProductVersion;
}

// 对比版本并执行下载逻辑
if (string.IsNullOrEmpty(localVersion) || !remoteVersion.Equals(localVersion, StringComparison.OrdinalIgnoreCase))
{
    Console.WriteLine("发现新版本,开始下载...");
    var exeUrl = $"https://raw.githubusercontent.com/{get-id}/AutoUpdate/main/hello.exe";
    using (var wc = new WebClient())
    {
        wc.DownloadFile(exeUrl, localExePath);
    }
    Console.WriteLine("下载完成");
}
else
{
    Console.WriteLine("当前已是最新版本");
}

方法二:利用GitHub Releases API

如果你的exe是通过GitHub Releases发布的,可调用官方API获取最新Release的版本号。注意公开仓库无认证请求有速率限制,私有仓库需携带访问令牌。

using System.Net;
using System.Text.Json;

// 替换为你的仓库API地址
var apiUrl = $"https://api.github.com/repos/{get-id}/AutoUpdate/releases/latest";
var localExePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "hello.exe");
string remoteVersion = null;

using (var wc = new WebClient())
{
    // GitHub API强制要求User-Agent头
    wc.Headers.Add("User-Agent", "C#-Version-Checker");
    try
    {
        var jsonResponse = wc.DownloadString(apiUrl);
        var release = JsonSerializer.Deserialize<GitHubRelease>(jsonResponse);
        // 移除Tag通常带的v前缀(如v1.0.0 → 1.0.0)
        remoteVersion = release.TagName.TrimStart('v');
    }
    catch (WebException ex)
    {
        Console.WriteLine($"获取最新Release失败:{ex.Message}");
        return;
    }
}

// 获取本地版本(同方法一)
string localVersion = null;
if (File.Exists(localExePath))
{
    var versionInfo = FileVersionInfo.GetVersionInfo(localExePath);
    localVersion = versionInfo.ProductVersion;
}

// 对比版本并下载
if (string.IsNullOrEmpty(localVersion) || !remoteVersion.Equals(localVersion, StringComparison.OrdinalIgnoreCase))
{
    Console.WriteLine("发现新版本,开始下载...");
    var exeUrl = $"https://raw.githubusercontent.com/{get-id}/AutoUpdate/main/hello.exe";
    using (var wc = new WebClient())
    {
        wc.DownloadFile(exeUrl, localExePath);
    }
    Console.WriteLine("下载完成");
}
else
{
    Console.WriteLine("当前已是最新版本");
}

// 用于反序列化GitHub API响应的实体类
public class GitHubRelease
{
    public string TagName { get; set; }
}

额外优化:版本号精准对比

如果是带后缀的复杂版本号(如1.0.1-beta),建议用Version类解析对比,避免字符串匹配误差:

if (Version.TryParse(localVersion, out var localVer) && Version.TryParse(remoteVersion, out var remoteVer))
{
    if (remoteVer > localVer)
    {
        // 执行下载逻辑
    }
}

内容的提问来源于stack exchange,提问作者Bruse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:50:21