2

我们有一种情况,我们将有两个 VSTO Outlook 加载项,它们都以一些公共共享代码开始,但共享代码可能会随着时间的推移而分道扬镳。理想情况下,我们希望重组加载项以将公共代码分解为单独的共享 dll,但由于非技术原因,目前这不是一个选项。如果两个加载项都部署在同一个 Outlook 实例上,您预计会出现什么问题?您是否看到出现问题,因为会有两个类具有相同的名称和相同的命名空间,但两个不同的加载项加载到同一个 Outlook 实例的定义不同?此外,其中一个加载项需要调用另一个加载项中的表单。您认为这会是通用代码差异的问题吗?

假设我们设法重组加载项以使用所有通用代码分离出一个 dll,Outlook 是否会遇到由两个不同加载项部署的同一 dll 的不同版本的问题?

4

1 回答 1

2

我当前的项目在 Word 的 VSTO 加载项之间进行了类似的代码共享。目前,我们在编译时使用“复制本地”对另一个项目的引用,但希望将其切换为引用 GAC 之外的共享代码,这样我们就可以从构建需要重建的共享组件的场景中解脱出来所有依赖它的项目。

如果您的所有共享库 dll 在构建期间都是“复制本地”,则您不应该有任何名称/名称空间冲突 - 但您需要在共享库代码更改时重新构建加载项。如果您希望单独处理构建,请创建一个用作库的加载项,它在 GAC 中安装其自身的副本,以便其他加载项可以使用它。我已经包含了一些链接,这些链接显示了如何从其他加载项调用代码。在实践中,我发现它有点傻,因为 VSTO 是位于 Office 本地代码之上的 .Net。

参考:

于 2009-11-13T17:38:55.157 回答