我还可以在office 2013中使用Microsoft.Office.Interop程序集吗?

 网上游走 发布于 2023-02-04 22:16

我不得不将一个较旧的项目(在.Net 2中)导入到Visual Studio 2013中,它使用了Microsoft Primary Interop Assemblies.

Visual Studio说我需要添加对项目的引用.现在我去做了一些阅读,显然微软只发布了2010年办公室的PIA?(我有Office 2013)

现在我想知道的是.

    我可以让它与Office 2013一起使用并向后兼容吗?

    如果是这样,这是一条走向未来的好途径?它会兼容吗?因为我认为你需要.Net 2(最迟)和Windows 8自带4.5而不是3(默认情况下),并且大多数新计算机都将拥有Office 2012或2013.

Hans Passant.. 122

PIA是一个历史工件,只有旧的.NET版本才需要(在v4之前).它们被"嵌入互操作类型"功能彻底而优雅地取代,也被称为"无PIA"功能.自Visual Studio 2010以来支持,在选择引用程序集时,您将在"属性"窗口中找到它.它默认为True.一个好的视频覆盖的底层技术是可以在这里找到.

这就是微软不发布Office 2013 PIA的原因,他们希望您嵌入互操作类型.

该功能非常理想,它可以避免您的客户不得不在他的机器上安装PIA,并让您将它们包含在安装人员中.在没有照顾它的情况下解决问题,这是一个完全太常见的事故.此外,Office的PIA非常大,嵌入互操作类型的巨大优势是您的程序集只包含您实际使用的类型.许多兆字节减少到几千字节.

工作流程略有不同.Microsoft.Office.Interop现在,您可以使用COM选项卡,而不是在"添加引用"对话框(.NET Framework选项卡)中添加对程序集的引用.然后选择" Microsoft Excel 15.0 Object Library"来生成使用Excel的程序的互操作类型.如果您加载以前使用过PIA的旧项目,则只需删除这些引用程序集并将其从COM选项卡中添加回来.

请注意,功能丢失,故意针对您在开发计算机上实际未安装的旧版Office更加困难.如果这是一个要求,那么您仍然需要该版本的PIA,在"属性"窗口中强制将"嵌入互操作类型"设置为"真".实际上这样做是值得怀疑的,微软很难保持新的Office版本与旧版本完全兼容.他们已经保持了15年,但它已经失去了动力.最糟糕的情况是针对比您在计算机上安装的更新版本,这可能会导致您的程序崩溃而非常难以诊断异常AccessViolationException.

请注意,您必须对代码进行少量修改才能使其正常工作.合成的" XxxxClass"类没有嵌入,只是" Xxxx"接口.只需从新陈述中删除" Class" 一词即可.

1 个回答
  • PIA是一个历史工件,只有旧的.NET版本才需要(在v4之前).它们被"嵌入互操作类型"功能彻底而优雅地取代,也被称为"无PIA"功能.自Visual Studio 2010以来支持,在选择引用程序集时,您将在"属性"窗口中找到它.它默认为True.一个好的视频覆盖的底层技术是可以在这里找到.

    这就是微软不发布Office 2013 PIA的原因,他们希望您嵌入互操作类型.

    该功能非常理想,它可以避免您的客户不得不在他的机器上安装PIA,并让您将它们包含在安装人员中.在没有照顾它的情况下解决问题,这是一个完全太常见的事故.此外,Office的PIA非常大,嵌入互操作类型的巨大优势是您的程序集只包含您实际使用的类型.许多兆字节减少到几千字节.

    工作流程略有不同.Microsoft.Office.Interop现在,您可以使用COM选项卡,而不是在"添加引用"对话框(.NET Framework选项卡)中添加对程序集的引用.然后选择" Microsoft Excel 15.0 Object Library"来生成使用Excel的程序的互操作类型.如果您加载以前使用过PIA的旧项目,则只需删除这些引用程序集并将其从COM选项卡中添加回来.

    请注意,功能丢失,故意针对您在开发计算机上实际未安装的旧版Office更加困难.如果这是一个要求,那么您仍然需要该版本的PIA,在"属性"窗口中强制将"嵌入互操作类型"设置为"真".实际上这样做是值得怀疑的,微软很难保持新的Office版本与旧版本完全兼容.他们已经保持了15年,但它已经失去了动力.最糟糕的情况是针对比您在计算机上安装的更新版本,这可能会导致您的程序崩溃而非常难以诊断异常AccessViolationException.

    请注意,您必须对代码进行少量修改才能使其正常工作.合成的" XxxxClass"类没有嵌入,只是" Xxxx"接口.只需从新陈述中删除" Class" 一词即可.

    2023-02-04 22:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有