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

Visual Studio 2022 VSTO清单无法生成SHA256加密时间戳求助

VSTO ClickOnce清单无法添加SHA256加密时间戳问题解决

问题背景

使用Visual Studio 2022开发VB.NET Office插件时,遇到ClickOnce安装程序的VSTO清单无法添加SHA256加密时间戳的问题。Sectigo代码签名证书将于8月过期,需通过加密时间戳确保证书过期后安装程序仍可正常运行。

当前现象

  • 证书过期前,安装程序运行正常,显示已知发布者;
  • 将测试电脑日期改为10月(证书过期后),安装时提示「发布者无法验证」,显示「未知发布者」,对应文件为AddIn.vsto;
  • Setup.exe属性中同时包含SHA256签名和时间戳,可正常工作。

已尝试的无效方法

  • 在VS中指定Sectigo时间戳服务器(带/不带?td=sha256参数);
  • 单独运行Mage工具(带/不带-a sha256RSA参数);
  • 更换DigiCert时间戳服务器;
  • 重命名旧版本Mage.exe。

环境信息

  • 开发/测试电脑:Windows 10 Pro 22H2;
  • Visual Studio Pro 2022 64位 17.9.6版本;
  • 插件目标.NET Framework 4.8,VSTO不支持更高版本的DotNet-Mage工具。

解决方案

1. 使用正确版本的Mage工具并指定完整参数

VSTO依赖.NET Framework版本的Mage.exe(而非.NET Core的DotNet-Mage),需定位到对应.NET 4.8的工具路径(通常为C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\mage.exe),执行以下命令重新签名清单:

mage.exe -Sign "AddIn.vsto" -CertFile "你的证书文件路径.pfx" -Password "证书密码" -TimeStampUri "http://timestamp.sectigo.com?td=sha256" -Algorithm sha256RSA

关键注意点:必须同时指定-Algorithm sha256RSA算法参数和带?td=sha256的时间戳服务器,确保签名和时间戳均采用SHA256加密标准。

2. 修正Visual Studio发布签名配置

在项目属性的发布设置中,确保签名配置完全符合SHA256要求:

  • 进入「项目属性」→「发布」→「签名」;
  • 勾选「对ClickOnce清单签名」,选择你的Sectigo证书;
  • 点击「详细信息」→「高级」,将哈希算法设置为SHA256;
  • 时间戳服务器填写http://timestamp.sectigo.com?td=sha256,不要省略?td=sha256参数。

3. 手动清理并重新生成签名清单

VS自动发布可能缓存旧清单文件,需手动清理后重新生成:

  • 右键项目→「清理」,清除所有编译缓存;
  • 右键项目→「生成」,重新编译项目;
  • 定位到发布输出目录,找到AddIn.vsto及Application Files文件夹下的所有清单文件;
  • 使用步骤1中的Mage命令逐个签名这些清单;
  • 重新打包发布项目。

4. 验证时间戳有效性

签名完成后,可通过两种方式验证时间戳是否生效:

  • 右键AddIn.vsto→「属性」→「数字签名」→选中签名→「详细信息」→「查看证书」,确认「时间戳」字段存在,且加密算法为SHA256;
  • 使用signtool.exe执行验证命令:
signtool.exe verify /v /pa AddIn.vsto

查看输出内容,确认包含「时间戳签名有效」及SHA256相关的验证信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:22:47