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

如何在调用更新函数时更新C# Console .NET程序?

简单实现C#控制台程序手动更新方案

核心思路

不用复杂框架,拆成两个小部分就行:主程序负责检查更新、触发更新流程;一个独立的迷你更新器负责替换主程序文件,适合学校项目快速搞定。

1. 准备两个项目

  • 主控制台项目:写你的业务代码,再加一段更新检查的逻辑
  • 更新器项目:单独的小型控制台程序,只做“复制新文件→替换旧文件→启动主程序”这几件事

2. 主程序的更新逻辑

在主程序里加个CheckAndUpdate()方法,逻辑很直白:

  • 对比本地/共享目录里的最新版本号和当前程序版本
  • 有新版本就询问用户,同意就启动更新器然后自己退出
  • 示例代码:
using System;
using System.Diagnostics;
using System.Reflection;
using System.IO;

public static void CheckAndUpdate()
{
    // 学校展示用本地共享文件夹就行,把版本号存成txt文件
    string versionFilePath = @"\\班级共享盘\MyApp\version.txt";
    string latestVersion = File.ReadAllText(versionFilePath).Trim();
    string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();

    if (latestVersion != currentVersion)
    {
        Console.WriteLine($"发现新版本:{latestVersion},当前版本:{currentVersion},是否更新?(Y/N)");
        if (Console.ReadLine().Trim().ToUpper() == "Y")
        {
            // 启动更新器,传主程序路径和新版本exe的地址
            string updaterPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Updater.exe");
            string newAppPath = @"\\班级共享盘\MyApp\MainApp.exe";
            Process.Start(updaterPath, $"\"{Assembly.GetExecutingAssembly().Location}\" \"{newAppPath}\"");
            Environment.Exit(0);
        }
    }
}

3. 更新器的核心代码

更新器只需要做三件事:等主程序退出、替换文件、启动新程序,示例代码:

using System;
using System.Diagnostics;
using System.IO;
using System.Threading;

class Updater
{
    static void Main(string[] args)
    {
        if (args.Length != 2)
        {
            Console.WriteLine("参数错误");
            Console.ReadKey();
            return;
        }

        string mainAppPath = args[0];
        string newAppPath = args[1];

        // 简单等2秒,确保主程序完全退出(学校场景足够用)
        Thread.Sleep(2000);

        try
        {
            // 覆盖旧的主程序文件
            File.Copy(newAppPath, mainAppPath, true);
            Console.WriteLine("更新完成!3秒后启动程序...");
            Thread.Sleep(3000);
            Process.Start(mainAppPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"更新失败:{ex.Message}");
            Console.ReadKey();
        }
    }
}

4. 部署和更新步骤

  • 主程序的版本号在项目属性里设置:右键项目→属性→应用程序→程序集信息,填好版本号
  • 每次更新主程序后,把新的MainApp.exe放到共享目录,同时更新version.txt里的版本号
  • 把更新器Updater.exe和主程序放在同一目录就行

超简化单机版(不用共享盘)

如果是单机展示,直接在主程序目录建个update文件夹,把新版本的MainApp.exe和version.txt放进去,主程序检查这个文件夹里的内容就行,连共享盘都省了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:20:30