将 Open XML 引用添加到 Visual Studio 项目



我正在将 Open XML 功能添加到 Visual Studio 2012 和 2010 中内置的 Office VSTO 加载项。 这需要向我的VS项目添加两个引用:DocumentFormat.OpenXml.dll和WindowsBase.dll。 我担心的是这些 DLL 不会出现在最终用户的计算机上,并且代码在他们的计算机上运行时会引发错误。 两个问题:

1(假设这两个DLL存在于我的用户的PC上是否安全(就像我可以安全地假设System.Xml.dll一样(? 它们是随Windows和/或Office自动安装的,还是包含在每个人通常安装的某种Windows/Office更新中?

2( 如果没有,确保我的加载项在其计算机上运行的最佳方法是什么? 我是否需要将这些作为先决条件包含在安装程序中? 设置 CopyLocal 属性 = True?

我确实在SO上发现了这个类似的问题:

是否需要在每台运行我的程序的计算机中安装 OpenXML SDK?

但输入的假设是 CopyLocal 已设置为 True。 如果可能的话,我宁愿避免这种情况。 此外,该解决方案并不是真正的解决方案,因为作者说不需要采取任何行动。 Vallo对已接受解决方案的评论似乎更有帮助,但它似乎需要最终用户采取我想要避免的不直观的额外操作。

DocumentFormat.OpenXml.dllOffice Open XML SDK的一部分。客户端没有理由安装整个 SDK

所以是的,您必须通过将CopyLocal设置为True来向他们运送DocumentFormat.OpenXml.dll

WindowsBase.dll.NET Framework 的一部分,因此您不必手动包含此框架。

所以让我用我的知识回答你

  1. 假设用户将安装Open XML不是一个好的举动。正如您认为的那样,它没有任何更新或办公安装[Open XML独立于办公软件包工作。这就是为什么您可以在没有Excel或任何其他办公包的情况下生成Open XML文件]

  2. 的,最好的办法是将您的解决方案.dll交付给最终用户。这里有一个问题,当您在计算机上安装 Open XML SDK 时,您已经通过了许可协议。我欢迎您删除并重新安装 Open XMl SDK,以便您可以看到许可协议内容 [您不会在任何其他地方找到该协议]。它清楚地说.dll可以免费使用和交付[是的,有一些限制 - 只需通过它]。

那你能做什么呢?

我目前正在使用一个必须使用Open XML SDK的产品。我所做的是将.dll添加到我们产品的第三方资源部分,并将其交付给客户。我认为这是你能做的最简单的事情。

否则,您还有另一种选择。您可以要求使用您的产品以及需要在产品中使用 Open XML 依赖项功能的客户将 Open XML SDK 安装到他们的计算机上。

总之,您需要在本地计算机中具有.dll才能使用Open XML SDK。因此,您的客户也应该与他们.dll,以获得 Open XML SDK 依赖项功能。

希望你有一些想法,我帮助你的情况。

注意 - 您的"DocumentFormat.OpenXml.dll"是我在这里标记的.dll。"WindowsBase.dll"存在于.net框架中

最新更新