VSTO到底是什么?
What is VSTO exactly?
我有一些 Excel 和 Word 2007-2016 的加载项。我不明白一些事情。我的项目使用了一些 dll,例如 Microsoft.Office.Tools.Common、Office.dll、一些 excel、word 和通用互操作。并且这些文件可以同时在几个地方找到,它们的不同版本(如程序文件,windows/assembly、windows/Microsoft.Net/assembly)。所以我不知道该使用哪个版本。而且,如果用户安装了 VSTO,我想他有这些文件。那么为什么我需要提供它们呢?我们在安装VSTO的时候到底安装了什么?哪个部分用于什么以及哪个安装位置来自哪个组件?我想我做的不对,因为我发现 Excel 同时加载同一文件的两个不同版本。
这些问题很多,其中很多在很大程度上取决于您提供的解决方案...
PIA ("Office dlls") 的情况比较明确:
- 您不需要(也不应该)使用 VSTO 解决方案分发 Office PIA,2007 和 2010 可能是个例外。在这些版本中,安装 .NET 支持是可选的,而不是默认的。这就是为什么这些版本有可再发行组件,而其他版本没有。您的安装程序需要检查它们是否存在(与 VSTO 运行时和 .NET Framework 版本相同)并仅在必要时安装。
- Office 总是将 PIA 安装到 GAC 中,您的解决方案会在那里找到它们。在开发人员计算机上引用它们的位置没有区别。
- GAC 中的 PIA 只能通过 Visual Studio 对话框中用于插入引用的 COM 选项卡使用。许多 .NET 开发人员没有在那里找到它们,因此 Microsoft 提供了一组(一个)带有 VSTO 的 PIA,并将它们复制到 Visual Studio 文件夹中,以便它们显示在对话框的 .NET 选项卡中盒子。唯一的问题是,当 Visual Studio 版本发布时,您只能获得 "current" Office 版本的 PIA 集,这意味着您可能 得到印象 您不能针对任何其他版本进行开发,因为您在 .NET 选项卡中找不到 PIA(但它们会在 COM 选项卡中)。
- 经验法则:始终,始终 使用您计划支持的 最早 版本的 Office 开发您的代码。这样做有两个原因:1)您只能使用所有版本的 Office 应用程序都可用的功能(Office 通常是向后兼容的); 2) Office 旨在将对旧 PIA 集的引用迁移到新集,而不是相反。
在 MSDN 上的 VSTO 论坛顶部固定了一篇关于部署的好文章"sorts" 对各种版本的 VSTO 和 Office 的很多要求:https://social.msdn.microsoft.com/Forums/vstudio/en-US/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/deploying-office-solutions-to-end-user-computers?forum=vsto for add-ins targeting 2007-2010. For later versions, see the MSDN documentation: https://msdn.microsoft.com/en-us/library/bb386179.aspx
我有一些 Excel 和 Word 2007-2016 的加载项。我不明白一些事情。我的项目使用了一些 dll,例如 Microsoft.Office.Tools.Common、Office.dll、一些 excel、word 和通用互操作。并且这些文件可以同时在几个地方找到,它们的不同版本(如程序文件,windows/assembly、windows/Microsoft.Net/assembly)。所以我不知道该使用哪个版本。而且,如果用户安装了 VSTO,我想他有这些文件。那么为什么我需要提供它们呢?我们在安装VSTO的时候到底安装了什么?哪个部分用于什么以及哪个安装位置来自哪个组件?我想我做的不对,因为我发现 Excel 同时加载同一文件的两个不同版本。
这些问题很多,其中很多在很大程度上取决于您提供的解决方案...
PIA ("Office dlls") 的情况比较明确:
- 您不需要(也不应该)使用 VSTO 解决方案分发 Office PIA,2007 和 2010 可能是个例外。在这些版本中,安装 .NET 支持是可选的,而不是默认的。这就是为什么这些版本有可再发行组件,而其他版本没有。您的安装程序需要检查它们是否存在(与 VSTO 运行时和 .NET Framework 版本相同)并仅在必要时安装。
- Office 总是将 PIA 安装到 GAC 中,您的解决方案会在那里找到它们。在开发人员计算机上引用它们的位置没有区别。
- GAC 中的 PIA 只能通过 Visual Studio 对话框中用于插入引用的 COM 选项卡使用。许多 .NET 开发人员没有在那里找到它们,因此 Microsoft 提供了一组(一个)带有 VSTO 的 PIA,并将它们复制到 Visual Studio 文件夹中,以便它们显示在对话框的 .NET 选项卡中盒子。唯一的问题是,当 Visual Studio 版本发布时,您只能获得 "current" Office 版本的 PIA 集,这意味着您可能 得到印象 您不能针对任何其他版本进行开发,因为您在 .NET 选项卡中找不到 PIA(但它们会在 COM 选项卡中)。
- 经验法则:始终,始终 使用您计划支持的 最早 版本的 Office 开发您的代码。这样做有两个原因:1)您只能使用所有版本的 Office 应用程序都可用的功能(Office 通常是向后兼容的); 2) Office 旨在将对旧 PIA 集的引用迁移到新集,而不是相反。
在 MSDN 上的 VSTO 论坛顶部固定了一篇关于部署的好文章"sorts" 对各种版本的 VSTO 和 Office 的很多要求:https://social.msdn.microsoft.com/Forums/vstudio/en-US/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/deploying-office-solutions-to-end-user-computers?forum=vsto for add-ins targeting 2007-2010. For later versions, see the MSDN documentation: https://msdn.microsoft.com/en-us/library/bb386179.aspx