主互操作程序集(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来安装办公室以使工作正常?
答案 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)
你的问题实际上有两个部分:
在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。