c# - Primary Interop Assemblies ( PIA ) 是否需要在机器上安装 Microsoft Office 才能工作

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

Primary Interop Assemblies (PIA) 是否需要在机器上安装 Microsoft Office 才能工作?

我浏览了太多令人困惑的帖子/网站,无法得出结论。

我有一台没有安装 office 的机器,我正在使用 VS2010。由于 Microsoft.Office.Interop.Excel 程序集在引用的 COM 部分中不可用。我通过引用资料中的 thought .Net 部分添加了它。它仍然会抛出以下错误。

Retrieving the COM class factory for component with CLSID failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

这是来自微软网站的声明,The Office PIAs are not required on end-user computers to run Office solutions .这到底是什么意思?

这是否意味着无需安装 Office 我们就可以使用互操作程序集?

如果不是,为什么我们需要安装 office 才能运行时需要 PIA?

最佳答案

This is statement from Mircosoft website , The Office PIAs are not required on end-user computers to run Office solutions . What does this mean exactly ?

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

The PIAs must also be installed on end-user computers to run Office solutions that target the .NET Framework 3.5. However, the Office PIAs are not required on end-user computers to run Office solutions that target the .NET Framework 4. For more information, see Designing and Creating Office Solutions. (https://msdn.microsoft.com/en-us/library/vstudio/hy7c6z9k(v=vs.100).aspx)

这意味着(对于 net 4+)当您使用 PIA 在 VS 中创建 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 工作表上做一些事情。

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

此程序完成后,我希望会计部门的 Bob 运行它。所以我发布了程序,它安装在 Bob 的机器上。 Bob 不需要在他的本地机器上安装 PIA 来运行该程序。他需要办公室。

Does it mean without Office installation we can work with interop assemblies ?

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

关于c# - Primary Interop Assemblies ( PIA ) 是否需要在机器上安装 Microsoft Office 才能工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133505/

相关文章:

c# - Mvc 5 单元测试 - 设置 Controller 的 viewbag 值

c# - EF Core 不返回超过 3 个子对象

c# - 我如何将 linq 转换为 lambda

c++ - 程序不显示显示处理和计时的窗口

c# - 将不同类型的对象传递给非托管函数

c# - DbContext 对象看不到它的属性 - DbSets

javascript - 在标记内调用 Javascript 函数时遇到问题

asp.net-mvc - ASP.NET MVC3 在 Windows 8 中不工作

javascript - 用于嵌套函数的 Clojurescript Extern

c# - 从 C# 调用 Windows API 函数时,签名的哪个来源信任 : . NET Framework 源代码或 PInvoke?