主互操作程序集(PIA)是否要求在计算机中安装Microsoft Office才能工作

时间:2015-06-30 08:41:18

标签: c# visual-studio-2010 interop office-interop com-interop

主互操作程序集(PIA)是否要求在计算机上安装Microsoft Office才能工作?

我经历了这么多令人困惑的帖子/网站,无法得出结论。

我有一台没有安装办公室的机器,我正在使用VS2010。由于Microsoft.Office.Interop.Excel程序集在COM部分中不可用于referance。我通过思想.Net部分在referances中添加它。仍然会引发以下错误。

  

检索CLSID失败的组件的COM类工厂   出现以下错误:80040154未注册类(例外情况除外)   HRESULT:0x80040154(REGDB_E_CLASSNOTREG))

这是Mircosoft网站The Office PIAs are not required on end-user computers to run Office solutions的声明。这究竟是什么意思?

这意味着没有Office安装我们可以使用互操作程序集吗?

如果不是为什么我们需要PIA来安装办公室以使工作正常?

3 个答案:

答案 0 :(得分:6)

  

主互操作程序集(PIA)是否要求在计算机上安装Microsoft Office才能工作?

PIA只是允许您从.NET调用Office COM对象模型的程序集。由Office应用程序托管的COM对象仍然需要存在才能使其正常工作。您获得的类未注册错误是因为计算机上缺少COM对象。要解决此问题,您需要安装适用于您的应用程序的Office版本。

答案 1 :(得分:4)

  

这是来自Mircosoft网站的声明,最终用户计算机上不需要Office PIA来运行Office解决方案。这究竟是什么意思?

这不是我发现的当前报价。我找到的是:

  

还必须在最终用户计算机上安装PIA,以运行面向.NET Framework 3.5的Office解决方案。但是,最终用户计算机上不需要Office PIA来运行面向.NET Framework 4的Office解决方案。有关详细信息,请参阅设计和创建Office解决方案。 (https://msdn.microsoft.com/en-us/library/vstudio/hy7c6z9k(v=vs.100).aspx

这意味着(对于net 4+),当您在VS usint PIA中创建Office解决方案时,您无需在目标计算机上安装这些PIA即可运行解决方案。 (原因是,如果您的目标是Net4,如果项目中每个Office PIA引用的Embed Interop Types属性设置为True(这是默认值),则使用的PIA类型的类型信息在构建项目时,您的解决方案将嵌入到解决方案程序集中。在运行时,使用嵌入式类型信息而不是PIA来调用Office应用程序的基于COM的对象模型。有关如何嵌入PIA类型的更多信息进入你的解决方案(https://msdn.microsoft.com/en-us/library/vstudio/3295w01c(v=vs.100).aspx

例如:我想在VB中编写一个程序来在XLSX工作表上执行doSomething。

我必须在我的开发机器上安装Excel,PIA和VS,否则我将无法编写它。

一旦这个程序完成,我希望Bob在会计中运行它。所以我发布了程序,它安装在Bob的机器上。 Bob不需要在本地计算机上安装PIA来运行程序。他 需要办公室。

  

这意味着没有Office安装我们可以使用互操作程序集吗?

反过来说。这意味着,使用PIA(EIT)的Net 4+应用程序,您的应用程序可以在客户端计算机上安装PIA的情况下工作(所需的部分将成为您部署的一部分)。

答案 2 :(得分:1)

你的问题实际上有两个部分:

  1. 开发人员需要开发使用Office组件的应用程序?
  2. 最终用户需要运行该应用程序?
  3. 在MSDN上,文章Office Solutions Development Overview (Visual Studio 2013)为这些问题提供了简明的指导。从“使用主互操作程序集自动化Office应用程序”部分:

      

    您必须在全球范围内安装并注册Office PIA   您的开发计算机上的程序集缓存执行最多   开发任务。有关更多信息,请参阅Configuring a Computer to Develop Office Solutions。不需要办公室PIA   最终用户计算机运行Office解决方案。有关更多信息,请参阅   Designing and Creating Office Solutions

    第一篇文章明确指出开发人员必须安装Microsoft Office:

      

    要为Microsoft Office创建加载项和自定义项,请安装a   支持的Visual Studio版本,.NET Framework和Microsoft   办公室。

    从“了解最终用户计算机上何时需要Office PIA”一节的后一篇文章中:

      

    默认情况下,不需要Office主互操作程序集(PIA)   如果嵌入互操作类型,则安装在最终用户计算机上   项目中每个Office PIA参考的属性设置为    True ,这是默认值。在此方案中,解决方案使用的PIA类型的类型信息是   在构建项目时嵌入到解决方案程序集中。在奔跑   时间,使用嵌入式类型信息代替PIA   调用Office应用程序的基于COM的对象模型。更多   有关如何将PIA中的类型嵌入到您的解决方案中的信息,   见Type Equivalence and Embedded Interop Types