代码之家  ›  专栏  ›  技术社区  ›  Rohith

两个Outlook VSTO加载项之间的共享代码

  •  2
  • Rohith  · 技术社区  · 16 年前

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

    假设我们设法重新构造外接程序以使用所有公共代码分离一个dll,那么Outlook是否会遇到由两个不同的外接程序部署的同一个dll的不同版本的问题?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Michael Regan    16 年前

    我当前的项目在Word的vsto外接程序之间进行了类似的代码共享。目前,我们正在编译时使用对另一个带有“copy local”的项目的引用,但希望将其切换为从GAC中引用共享代码,这样我们就不必构建需要重新构建所有依赖它的项目的共享组件了。

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

    参考文献:

    推荐文章