如何从VSTO项目中彻底移除或禁用ClickOnce部署?
解决VSTO项目构建自动恢复ClickOnce配置的问题
我按照官方指南为Office插件创建了MSI安装程序,完全不需要ClickOnce,但每次手动移除项目文件里的以下ClickOnce相关配置节点后,执行构建操作这些配置又会自动恢复:
<IsWebBootstrapper>False</IsWebBootstrapper> <BootstrapperEnabled>true</BootstrapperEnabled> <PublishUrl>publish\</PublishUrl> <InstallUrl /> <TargetCulture>en</TargetCulture> <ApplicationVersion>1.0.0.0</ApplicationVersion> <AutoIncrementApplicationRevision>false</AutoIncrementApplicationRevision> <UpdateEnabled>true</UpdateEnabled> <UpdateInterval>7</UpdateInterval> <UpdateIntervalUnits>days</UpdateIntervalUnits> <ProductName>MyAddIn</ProductName> <PublisherName>Contoso</PublisherName> <SupportUrl /> <FriendlyName>My Add-In</FriendlyName> <OfficeApplicationDescription>My Add-In</OfficeApplicationDescription> <LoadBehavior>3</LoadBehavior> <NuGetPackageImportStamp> </NuGetPackageImportStamp>
补充说明:试过启用/禁用“启用ClickOnce安全设置”“为ClickOnce清单签名”选项,均无效果;网上旧解决方案已失效,当前VSTO项目似乎无法通过常规操作禁用ClickOnce设置。
核心修复方案:修改项目类型GUID
VSTO项目默认绑定了ClickOnce相关的项目类型标识,这是配置自动恢复的根源,需手动编辑项目文件彻底移除:
- 关闭Visual Studio,找到项目的
.csproj/.vbproj文件,用文本编辑器打开 - 找到
<ProjectTypeGuids>节点,默认内容类似:
其中<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33}是VSTO ClickOnce专属GUID - 删除该GUID,只保留类库类型的GUID:
<ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - 保存文件后重新打开Visual Studio
后续清理步骤
完成上述修改后,还需清理残留的ClickOnce相关配置:
- 打开项目属性的「发布」选项卡,点击「清除」按钮(若存在)
- 删除项目目录下的
publish文件夹 - 执行「清理解决方案」后重新构建项目
验证
重新构建后检查项目文件,确认之前自动恢复的ClickOnce配置节点不再出现,同时验证MSI安装程序的构建流程正常运行。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

