【问题标题】:(C# / VB.NET) Microsoft.Office.Interop.PowerPoint.Shape.AddComment - "NotImplementedException" when "Microsoft Office"-Version is newer than 2010(C# / VB.NET) Microsoft.Office.Interop.PowerPoint.Shape.AddComment - 当“Microsoft Office”版本高于 2010 时出现“NotImplementedException”
【发布时间】:2022-01-07 01:15:33
【问题描述】:

当“Microsoft Office”版本高于 2010 时,Office 的“Interop”界面似乎在与“Microsoft Office”交互时出现一些问题。在“Microsoft.Office.Interop”中使用“AddComment”-Function 时.PowerPont.Shapes” 我得到一个“System.NotImplementedException”。 在“Microsoft Office 2010”或更早版本中一切正常。

其他信息:

  • 我自己只有一个 2010 版的“Microsoft Office”。该问题由具有较新版本的同事报告。
  • 我的“Interop.PowerPoint.dll”的当前版本号是“2.6.0.0”。

问题:

  • 我的“Interop.PowerPoint.dll”是否太旧了?
  • 现有的最新“Interop.PowerPoint.dll”的版本号是多少?
  • 即使我仍然只有 2010 版的“Microsoft Office”,是否有任何方法可以获得最新的“Interop.PowerPoint.dll”?
  • 我的“NotImplementedException”是否有其他原因?
  • 有没有办法解决这个问题?我只是想让我的程序将 cmets 写入“PowerPoint”文件。

【问题讨论】:

  • 您是使用自己的 dll 并将您的 dll 复制到输出,还是使用每个用户的系统 dll 作为框架?
  • 无论如何我都会更新库
  • 我敢肯定,当前的“互操作”库是如何产生的,只有同事知道这些年来它们不再为我们工作了。但这不是问题,因为也许我可以通过 NuGet 轻松获得更新的“互操作”库。无论如何,我和我的同事同意解决在使用较新的“MS Office”版本时将 cmets 写入 PowerPoint 文件的问题。我们只是将需要写入的数据写入另一个地方。不管怎样,谢谢你的帮助。

标签: c# .net vb.net ms-office office-interop


【解决方案1】:

互操作程序集不包含任何复杂的逻辑或方法的实现。互操作程序集的目标是将您的调用从托管代码编组到非托管 COM 世界。因此,如果方法失败,则应在 COM 服务器实现中搜索问题。

您可以下载 PIA Microsoft Office 2010: Primary Interop Assemblies Redistributable 或在 Visual Studio 中自行生成。

如果在安装时选择了 Office 可扩展性功能,您还可以在 Visual Studio 安装文件夹中找到 Office PIA。在Office primary interop assemblies 文章中了解更多信息。

从 Visual Studio 2017 开始,这些 PIA 副本安装到开发计算机上的以下共享位置:

  • %ProgramFiles%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\

  • %ProgramFiles(x86)%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\ - 在 64 位操作系统上)

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多