(C# / VB.NET) Microsoft.Office.Interop.PowerPoint.Shape.AddComment - 当“Microsoft Office”版本高于 2010 时出
Posted
技术标签:
【中文标题】(C# / VB.NET) Microsoft.Office.Interop.PowerPoint.Shape.AddComment - 当“Microsoft Office”版本高于 2010 时出现“NotImplementedException”【英文标题】:(C# / VB.NET) Microsoft.Office.Interop.PowerPoint.Shape.AddComment - "NotImplementedException" when "Microsoft Office"-Version is newer than 2010 【发布时间】: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 文件的问题。我们只是将需要写入的数据写入另一个地方。不管怎样,谢谢你的帮助。 【参考方案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 位操作系统上)
【讨论】:
以上是关于(C# / VB.NET) Microsoft.Office.Interop.PowerPoint.Shape.AddComment - 当“Microsoft Office”版本高于 2010 时出的主要内容,如果未能解决你的问题,请参考以下文章