我仍然可以使用Office 2013的Microsoft.Office.Interop程序集?

我不得不将旧的项目(在.Net 2中)导入Visual Studio 2013,它使用了Microsoft主互操作程序集。

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

现在我想知道的是。

  1. 我可以得到它与办公室2013年工作,并向后兼容?
  2. 如果是的话,这是一个走向未来的好路线吗? 它会兼容吗? 因为我看到你需要.Net 2 (最迟),而Windows 8自带了4.5而不是3(默认),大多数新电脑将有Office 2012或2013。

PIA是历史文物,只有旧版本的.NET(v4之前)才需要。 它们已被“embedded互操作types”function(也称为“无PIA”function)彻底而优雅地取代。 从Visual Studio 2010开始支持,当您select一个引用程序集时,您将在“属性”窗口中find它。 它默认为True 。 一个涵盖底层技术的好video可以在这里find 。

这是微软不会为Office 2013发布PIA的原因,他们希望您可以embedded互操作types。

这个function是非常可取的,它可以避免你的客户在他的机器上安装PIA,并且让你的安装程序包含它们。 解决这个问题的时候,既没有照顾它,一个完全太常见的事故。 另外,Office的PIA非常大,embeddedinteroptypes的好处在于你的程序集只包含你实际使用的types。 许多兆字节减less到几千字节。

工作stream程有点不同。 现在,使用“添加引用”对话框中的“.NET Framework”选项卡添加对Microsoft.Office.Interop程序集的引用,而不是使用“COM”选项卡。 然后select“ Microsoft Excel 15.0 Object Library ”来为使用Excel的程序生成interoptypes。 如果你加载一个以前使用PIA的旧项目,那么只需删除这些引用程序集并将它们从COM选项卡中添加回来即可。

请注意,function丢失,故意针对您的开发机器上实际上没有安装的旧版本的Office更加困难。 如果这是一个要求,那么您仍然需要该版本的PIA,在“属性”窗口中强制“embedded互操作types”为“真”。 其实这样做是有问题的,微软很难保持新版本的Office与旧版本完全兼容。 他们已经把它保存了15年,但现在已经没有了。 最坏的情况是针对比您的机器上安装的版本更新的版本,这很容易使您的程序崩溃,很难诊断exception,如AccessViolationException

请注意,您必须对代码进行小的修改才能使其工作。 合成的“ XxxxClass ”类没有embedded,只是“ Xxxx ”接口。 只需从新语句中删除“ Class ”一词。

VS 2015社区与Office 365 – 无论出于何种原因,从COM对象添加不起作用。 解决scheme是进入GAC并find互操作程序集,将它们复制到临时目录,然后像任何DLL一样添加到项目中。

此外,如果您现在还不知道,Windows 8确实有旧版本的.NET Framework,但是它们并未默认安装。 转到程序function—>添加function到Windows —->,第一个checkbox应该是.NET 3.0和2.0。 请注意,如果您位于WSUS服务器上,则需要告诉Windows从Windows Update服务器获取文件。 希望它有帮助!

PIA for Office正式不存在向后兼容性。 事实上,它的作品。

为了向下兼容性的原因,我使用PIA for Office XP已经有好几年了,而且在Office XP,2003,2007和2010(尚未在2013年testing过)以及Windows XP,Vista,7和8上都可以正常工作。

为了与不同版本的Windows兼容,我使用.NET框架3.5。

对于未来…这取决于你在PIA做什么。 如果可能的话,直接处理Open XML文件或为word / excel创build一个加载项会好得多。

我刚刚发现Visual Studio 2013 express没有办公室支持了。 所以你至less需要亲版本来使它工作。