ClickOnce:将子项目与主项目一起发布

本文关键字:项目 一起 子项目 ClickOnce | 更新日期: 2023-09-27 18:16:08

我有一个包含2个项目的VS项目。一个是称为"main"的主项目,它是一个可执行文件。第二个名为"main-ext"的项目也是一个可执行文件,但它是第一个项目的扩展。它有"main"作为引用,因为它使用了main的一些类型。

我现在想做一个ClickOnce发布的"主",也包括"主-ext"。我已经成功地为"主"设置了ClickOnce。但是我不能在发布中包含由"main-ext"生成的输出。

然后我发现,您需要以某种方式将"main-ext"中的文件包含到"main"项目中,以便ClickOnce部署它们。

现在,考虑到这一点,我尝试了以下方法:

  1. 添加"main-ext"作为"main"的引用。由于循环引用,这显然不起作用。
  2. 将"main-ext"的输出EXE手动添加为"Content"并带有"Copy Always"到项目"main"。虽然这确实有效,但它有一个巨大的问题。如果我应该删除输出文件(或运行Build> Clean),我就不能再得到构建的解决方案了。因为"main-ext"需要"main"来构建,而"main"需要"main-ext"的输出来构建。相同的循环引用,只是有一点不同。

任何想法?

下一步我将尝试重构"main",并将"main"answers"main-ext"共享的所有公共类型和东西移动到专用的第三个项目中,一个类库。但是因为这个项目相当大而且复杂,我想把它作为最后的选择。

谢谢。

ClickOnce:将子项目与主项目一起发布

考虑修改ClickOnce的清单。思路是:

  • Main没有引用ext
  • build ClickOnce for main
  • 发布ClickOnce
  • 在ManifestManagerUtility中打开.application(或者你可以使用ClickOnce API,我认为)
  • 在main-ext
  • 中添加引用
  • 重签舱单。

然后你可以允许你的用户下载一个新版本。这两个文件都应该安装在客户端机器上。

请看Prism文档中的这一章,它包含了一个非常相似的场景的一步一步的描述。