繁体   English   中英

在多台开发机器上打开引用“MS-Office对象库”的项目

[英]Open a project referencing “MS-Office Object Library” on multiple development machines

我正在使用两台计算机,一台安装了Office 2010,另一台安装了Office 2016.第一台是我的主电脑。

假设我在主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 Object Library”), 因为“Embed Interop Type”属性设置为true

到目前为止一切都那么好,但是当我添加对Microsoft.Office.Core (Microsoft Office 14.0对象库)的引用时,我无法得到相同的行为,也就是说,当我在第二台PC上打开项目时,我发现具有相同版本(14.0)的引用标记有一个图标,表示缺少引用以及警告告诉我相同的事情(无法找到引用)。

显然,如果我删除引用并用更新的版本(16.0)替换它,一切正常 - 除了当然-我将无法在主PC上打开解决方案。

所以,我的问题是:

  • 为什么不选择适合Microsoft.Office.Core版本,就像Interop.ExcelInterop.Word等一样?
  • 有没有解决方案,所以我可以在两台计算机之间无缝打开项目?

请注意:

  • 主要关注点不是最终用户使用不同版本的Office运行应用程序(之前已多次询问和回答 )。 关心的是在安装了不同版本的Office的二次开发机器上打开解决方案/项目。

  • 如果相关,这是一个WinForms应用程序。


更新:

  • 我尝试将MSO.DLL文件复制到本地'lib'文件夹,但每当我将其添加为参考时,它会显示"C:\\Windows\\assembly\\GAC_MSIL\\Office\\14.0.0.0__71e9bce111e9429c\\Office.dll"作为路径参考。 然后,无论我是否禁用/启用Embed Interop Types属性,它仍然无法在二次开发机器上编译。

  • 虽然我不太确定我是否完全得到了Eugene的答案 ,但是它给了我在Assemblies选项卡中添加PIA引用的想法,而不是COM选项卡,并且仍然将Embed Interop Type属性设置为true。 这实际上似乎有效,但我不确定如果不使用COM引用可能有任何缺点。 可以?

您需要将互操作程序集(Microsoft Word / Excel / PowerPoint / Core 14.0对象库)复制到解决方案中的本地文件夹。 然后您可以将它们添加为引用,这样它们就可以在两台计算机上访问,并且您将能够在两台计算机之间无缝地打开项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM