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

如何在VS2022与.NET7中创建ClickOnce项目并迁移更新代码?

将.NET Framework 4.7.2 ClickOnce自动更新代码适配到.NET7

前置准备

  1. 在Visual Studio 2022中打开升级后的.NET7项目,确保已配置ClickOnce部署(右键项目→属性→发布→选择ClickOnce部署方式)。
  2. 安装NuGet包:Microsoft.VisualStudio.ApplicationDeployment,这是.NET7中访问ClickOnce部署属性的必要依赖。

适配后的自动更新代码示例

原来基于.NET Framework的代码依赖System.Deployment.Application.ApplicationDeployment,.NET7中替换为Microsoft.VisualStudio.ApplicationDeployment.ClickOnceDeployment,核心逻辑如下:

using Microsoft.VisualStudio.ApplicationDeployment;
using System;
using System.Windows.Forms;

public void CheckForUpdates()
{
    try
    {
        // 获取当前ClickOnce部署实例,非ClickOnce部署时返回null
        var deployment = ClickOnceDeployment.Current;
        if (deployment == null)
        {
            MessageBox.Show("应用未通过ClickOnce部署,无法检查更新");
            return;
        }

        // 检查是否有可用更新
        if (deployment.CheckForUpdate())
        {
            var result = MessageBox.Show("检测到新版本,是否立即更新?", "更新提示", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                // 下载并安装更新,完成后重启应用
                deployment.Update();
                Application.Restart();
            }
        }
        else
        {
            MessageBox.Show("当前已是最新版本。");
        }
    }
    catch (InvalidDeploymentException ex)
    {
        MessageBox.Show("部署信息无效:" + ex.Message);
    }
    catch (DeploymentDownloadException ex)
    {
        MessageBox.Show("下载更新失败:" + ex.Message);
    }
    catch (Exception ex)
    {
        MessageBox.Show("检查更新时发生错误:" + ex.Message);
    }
}

关键API变化说明

  • 原ApplicationDeployment.IsNetworkDeployed → 替换为判断ClickOnceDeployment.Current是否为null(非ClickOnce部署时Current返回null)。
  • 原ApplicationDeployment.CheckForUpdate() → 对应ClickOnceDeployment.CheckForUpdate()。
  • 原ApplicationDeployment.Update() → 对应ClickOnceDeployment.Update()。
  • 异常类型基本保持一致,如InvalidDeploymentException、DeploymentDownloadException等仍可直接捕获处理。

注意事项

  • 确保项目的ClickOnce部署配置中,已启用“应用程序更新”选项(发布设置→更新→勾选“应用程序应该检查更新”)。
  • 若需要自定义更新源地址,可通过ClickOnceDeployment.UpdateLocation属性获取或设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:36:01