Ahm*_*eed 5 .net c# pia office-interop visual-studio-2015
我正在使用两台计算机,一台安装了 Office 2010,另一台安装了 Office 2016。第一台是我的主 PC。
假设我在主 PC 上启动了一个项目。如果我添加对以下任何一项的引用:
Microsoft.Office.Interop.Word(Microsoft Word 14.0对象库)。Microsoft.Office.Interop.Excel(Microsoft Excel 14.0对象库)。Microsoft.Office.Interop.PowerPoint(Microsoft PowerPoint 14.0对象库)。..然后在第二台 PC 上打开项目,Visual Studio 将自动为所有项目选择适用的版本(即“Microsoft XXXX 16.0对象库”),因为“嵌入互操作类型”属性设置为 true。
到目前为止Microsoft.Office.Core一切顺利,但是当我添加对(Microsoft Office 14.0 Object Library)的引用时,我无法获得相同的行为,即当我在第二台PC上打开项目时,我找到了相同版本的引用(14.0) 标有一个图标,表明参考资料丢失,同时警告告诉我同样的事情(无法找到参考资料)。
显然,如果我删除引用并将其替换为较新的版本 (16.0),则一切正常,除了- 当然 -我将无法再在主 PC 上打开解决方案。
所以,我的问题是:
Microsoft.Office.Core就像发生了什么Interop.Excel,Interop.Word等等?请注意:
主要关注点不在于最终用户使用不同版本的 Office 运行应用程序(这已经被多次询问和回答)。我更关心在安装了不同版本Office的二次开发机器上打开解决方案/项目。
如果相关,这是一个 WinForms 应用程序。
更新:
我尝试将 MSO.DLL 文件复制到本地“lib”文件夹,但每当我将其添加为引用时,它都会显示"C:\Windows\assembly\GAC_MSIL\Office\14.0.0.0__71e9bce111e9429c\Office.dll"为引用的路径。然后,无论我是否禁用/启用该Embed Interop Types属性,它仍然无法在二次开发机器上编译。
虽然我不太确定我是否完全得到了Eugene 的回答,但它让我有了在“程序Embed Interop Type集”选项卡而不是“COM”选项卡中添加 PIA 引用的想法,并且仍然将属性设置为 true。这实际上似乎有效,但我不确定不使用 COM 引用是否有任何缺点。可以?
您需要将互操作程序集(Microsoft Word/Excel/PowerPoint/Core 14.0 对象库)复制到解决方案中的本地文件夹。然后您可以将它们添加为引用,以便在两台计算机上都可以访问它们,并且您将能够在两台计算机之间无缝打开项目。
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |