使用click-once部署基于MEF的应用程序

时间:2011-10-31 12:05:26

标签: clickonce mef

我有一个应用程序是一个带有一堆MEF部件的shell。虽然用户可以在其文件系统中的某些特殊位置添加新的MEF部件,但应用程序本身需要自行部署大约5或6个这些库才能正常工作。我想使用click-once来进行部署。这样做的最佳方式是什么?

我能想到的最简单的事情就是在IDE中引用DLL并将它们标记为内容。然后他们将被部署。这意味着硬编码的文件路径(调试/发布等)。所以似乎应该有更好的方法。

第二个命令是将MEF dll的构建版本复制到一个公共目录,并始终引用项目中的那些并将它们标记为“内容”。

我已经看到了在另一个问题(Deploying MEF parts)中创建可再发行的参考。最终的解决方案看起来很像是将所有内容复制到一个目录中,然后将其压缩,然后在客户端上解压缩 - 这基本上就像“内容”这样的显式引用将在我的想法中做到(我认为)。

其他选择?非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我有一个访问各种第三方库的应用程序。最初,当我通过ClickOnce发布我的应用程序时,它的大小约为22Mb,因为它是初始版本,所以在我的用户群使用它的前几个月里,我不得不发布一些更新。

对于那些当时数据连接速度相当慢的用户来说,这是一个很大的数据。我必须找到一个更好的解决方案。

我最终创建了一个名为我的ClickOnce应用程序 - 先决条件的虚拟Visual Studio解决方案。在该项目中,我添加了应用程序所需的所有第三方依赖项,并添加了一个在Windows GAC中安装库的MSI安装程序项目。构建MSI安装程序后,我创建了bootstrapper并将其添加到Visual Studio for ClickOnce

在我的ClickOnce应用程序项目中,我所要做的就是在Visual Studio中选择我的新先决条件,并在VS的“应用程序文件”对话框中将每个关联的dll设置为“先决条件”。

我认为这样的设置可能适合您。有关此类设置的更多细节,请查看下面列出的链接。这种方法唯一的主要缺点是,如果您需要更新第三方库,则需要分发先决条件的更新版本。这很可能意味着卸载并重新安装ClickOnce应用程序,因为库文件是作为先决条件安装的。

进一步阅读