两个outlook VSTO插件之间的共享代码

两个outlook VSTO插件之间的共享代码

问题描述:

我们有一种情况,我们将有两个VSTO Outlook加载项,它们都以一些共同的共享代码开始,但共享代码可能会随着时间的推移发生分歧。理想情况下,我们希望重新构建加载项以将通用代码分解为单独的共享DLL,但由于非技术原因,目前这不是一个选项。如果两个加载项都部署在同一个Outlook实例上,您会发现哪些问题?您是否看到问题突然出现,因为会有两个具有相同名称和相同名称空间的类,但是由两个不同的加载项加载到同一个Outlook实例上的定义不同?还有一个加载项需要在另一个加载项中调用表单。你认为这将是一个共同代码差异的问题吗?两个outlook VSTO插件之间的共享代码

假设我们设法重新构建加载项以将所有常见代码分离出来,Outlook是否会遇到由两个不同加载项部署的相同dll的不同版本的问题?

我目前的项目已经在Word的VSTO插件之间做了类似的代码共享。现在,我们在编译时使用“copy local”引用另一个项目,但希望切换到引用GAC中的共享代码,这样我们就可以摆脱构建需要重建的共享组件的场景所有依赖它的项目。

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

参考文献: