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

添加第二个项目后构建VSTO-Addin时抛出InvalidDeploymentException异常

解决VSTO插件项目添加WinForms/WPF项目后构建时InvalidDeploymentException异常问题

我之前踩过一模一样的坑,折腾了好半天才找到问题根源和解决办法,给你详细梳理下:

问题根源

VSTO默认采用ClickOnce部署机制,当你在VSTO项目里引用了同解决方案下的WinForms/WPF项目时,ClickOnce不会自动把这个依赖项目的输出文件(比如对应的.dll)纳入部署包。安装.vsto时系统找不到必要的组件,就会抛出InvalidDeploymentException。

解决方案(按优先级尝试)

  • 调整ClickOnce应用程序文件设置
    右键你的VSTO项目 → 属性 → 切换到「发布」选项卡 → 点击「应用程序文件」按钮。在弹出的窗口里,找到你引用的WinForms/WPF项目生成的.dll文件(名字通常和项目一致),把它的「发布状态」改成「包含」,「下载组」保持「(Required)」。确认后点击确定,重新构建解决方案。

  • 统一依赖项目的输出路径
    右键你的WinForms/WPF项目 → 属性 → 生成 → 输出路径,设置成和VSTO项目完全相同的路径(比如都是bin\Debug\或者bin\Release\)。这样VSTO项目构建时能直接找到依赖文件,避免部署时遗漏。

  • 清理缓存后重新生成
    有时候旧的构建缓存会搞出奇怪问题:先点击Visual Studio顶部菜单的「生成」→「清理解决方案」,然后手动删除VSTO项目的bin和obj文件夹,最后重新「生成解决方案」,再尝试运行或发布。

  • 检查ClickOnce签名设置(如果启用)
    如果你的VSTO项目开了ClickOnce签名,要确保依赖项目的.dll也被正确签名,或者在VSTO的发布设置里允许未签名依赖。可以右键VSTO项目属性 → 签名 → 临时关闭「为ClickOnce清单签名」测试下,看是不是签名导致的问题。

兜底方案(前面方法都没用时)

直接编辑VSTO项目的.csproj(C#)或.vbproj(VB.NET)文件,手动添加对依赖文件的部署引用:

<ItemGroup>
  <Content Include="..\你的WinForms项目名\bin\Debug\你的WinForms项目名.dll">
    <Link>你的WinForms项目名.dll</Link>
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

记得把路径和文件名替换成你自己的,保存后重新构建即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:22:01