(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 时出的主要内容,如果未能解决你的问题,请参考以下文章

C# 和 VB.NET 的优缺点?

将 SQL 命令从 vb .net 转换为 C#

vb c c++,c# vb.net到底啥区别

如何将 C# 多维列表转换为 VB.Net

[C#][ASP.NET] 网站同时使用 C# 与 VB.NET

在 ASP.Net 网站项目中混合 VB.Net 和 C# 代码?