我想知道Microsoft.Office.Interop.PowerPoint dll缺少对PowerPoint加载项性能的影响。
假设在开发msi软件包期间已删除在用户计算机上查找PIA存在的启动条件。
感谢。
答案 0 :(得分:2)
PIA与表演没有任何关系。它只包含声明,[ComImport]用于Office对象模型中的接口和共同类。 CLR需要他们知道如何打电话给他们。
如果您的某个公共类暴露Office类型,那么在过去的日子里,PIA 可能是必要的。它解决了.NET类型身份问题,CLR坚持认为只有来自同一程序集的类型才相同。 PIA是一个组装。请注意,这在加载项中不常见,通常只创建一个程序集。
PIA已经过时,在.NET 4.0和VS2010中彻底和优雅地被替换。 v4 CLR有一个关于类型标识的新规则,如果[ComImport]类型具有相同的[Guid],则认为它是相同的,无论它来自哪个程序集。它为新的引用程序集属性提供了动力,您可以在“属性”窗口中找到它,命名为" Embed Interop Types"。默认为True。
这样做是告诉编译器在程序集中嵌入[ComImport]声明。就像你在源代码中自己声明了它们一样。具有巨大的优势,您完全失去了对Microsoft.Office.Interop.PowerPoint互操作程序集或PIA的运行时依赖性。而且您只需支付实际在程序中使用的互操作类型,Office PIA非常大。
这没有任何缺点。以至于微软不再发布Office 2013的PIA了。
您已经在使用嵌入互操作类型功能的可能性非常高。考虑到您的加载项有效,如果您仍然依赖它,它将崩溃并刻录。虽然从技术上讲,你可以依赖别人的善意。检查Microsoft.Office.Interop.PowerPoint引用的“属性”窗口以确定。
答案 1 :(得分:0)
我认为它会破坏加载项,假设加载项依赖于互操作,并且在这种情况下,当加载项尝试在互操作中查找所需的类型时,加载项将无法执行并且无法解决。