我将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上找到了类似的问题:
Is OpenXML SDK required to be installed in every computer that will run my program?
但是进入的假设是CopyLocal已经设置为True。如果可能的话,我宁愿避免这样做。此外,该解决方案并非真正的解决方案,因为作者说不需要采取任何行动。 Vallo对已接受的解决方案的评论似乎更有帮助,但它似乎要求最终用户采取我想要避免的不直观的额外行动。
答案 0 :(得分:0)
让我用我的知识回答你
假设用户安装了Open XML并不是一个好的举动。并且您认为它没有任何更新或办公室安装[Open XML独立于办公软件包工作。这就是为什么你可以在没有Excel或任何其他办公套件的情况下生成Open XML文件的原因]
是的,最好的办法是将解决方案提供给最终用户.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。 .net framework中存在“WindowsBase.dll”
答案 1 :(得分:0)
DocumentFormat.OpenXml.dll
是 Office Open XML SDK 的一部分。您的客户没有理由安装整个 SDK 。
是的,您必须将DocumentFormat.OpenXml.dll
设置为CopyLocal
,才能将True
发送给他们。
WindowsBase.dll
是 .NET Framework 的一部分,因此您无需手动包含此内容。