ClickOnce:将子项目与主项目一起发布
本文关键字:项目 一起 子项目 ClickOnce | 更新日期: 2023-09-27 18:16:08
我有一个包含2个项目的VS项目。一个是称为"main"的主项目,它是一个可执行文件。第二个名为"main-ext"的项目也是一个可执行文件,但它是第一个项目的扩展。它有"main"作为引用,因为它使用了main的一些类型。
我现在想做一个ClickOnce发布的"主",也包括"主-ext"。我已经成功地为"主"设置了ClickOnce。但是我不能在发布中包含由"main-ext"生成的输出。
然后我发现,您需要以某种方式将"main-ext"中的文件包含到"main"项目中,以便ClickOnce部署它们。
现在,考虑到这一点,我尝试了以下方法:
- 添加"main-ext"作为"main"的引用。由于循环引用,这显然不起作用。
- 将"main-ext"的输出EXE手动添加为"Content"并带有"Copy Always"到项目"main"。虽然这确实有效,但它有一个巨大的问题。如果我应该删除输出文件(或运行Build> Clean),我就不能再得到构建的解决方案了。因为"main-ext"需要"main"来构建,而"main"需要"main-ext"的输出来构建。相同的循环引用,只是有一点不同。
任何想法?
下一步我将尝试重构"main",并将"main"answers"main-ext"共享的所有公共类型和东西移动到专用的第三个项目中,一个类库。但是因为这个项目相当大而且复杂,我想把它作为最后的选择。
谢谢。
考虑修改ClickOnce的清单。思路是:
- Main没有引用ext
- build ClickOnce for main
- 发布ClickOnce
- 在ManifestManagerUtility中打开.application(或者你可以使用ClickOnce API,我认为)
- 在main-ext 中添加引用
- 重签舱单。
然后你可以允许你的用户下载一个新版本。这两个文件都应该安装在客户端机器上。
请看Prism文档中的这一章,它包含了一个非常相似的场景的一步一步的描述。