我不得不进口旧的项目(在.net中2)到Visual Studio 2013,它利用微软主Interop大会。
Visual Studio中说,我需要将引用添加到项目中。 现在我去了,做了一些阅读,显然微软目前只发行了PIA 2010年办公室吗? (我有Office 2013)
现在我想知道的是。
- 我可以得到它与Office 2013地工作,并且向后兼容?
- 如果是这样,这是一个很好的途径去为未来? 难道会是兼容吗? 因为我看你需要
.Net 2
(最晚)和Windows 8自带的4.5,而不是3(默认)和大多数新电脑将拥有办公室2012年或2013。
PIA的是一个历史的神器,只有(V4)之前老版本的.NET需要。 他们已经彻底和优雅的“嵌入互操作类型”的特点,也被称为“无PIA”的功能所取代。 支持,因为Visual Studio 2010中,你会发现它早在属性窗口中,当您选择参考组装。 它默认为True
。 一个好的视频覆盖的底层技术是可以在这里找到 。
这是微软不发布的PIA为Office 2013的原因,他们希望你能嵌入互操作类型来代替。
该功能是非常可取的,它避免你的客户不必安装了机器上的PIA的和为贵,包括他们与你的安装程序。 解决当没有照顾它,完全是太常见事故的问题。 此外,对于办公室的PIA是非常大的,嵌入互操作类型的巨大优势是,你组装只包含你实际使用的类型。 许多兆字节减少到几KB。
工作流是一个有点不同。 相反,增加了一个参考的Microsoft.Office.Interop
组件在Add Reference对话框可用,.NET框架标签,您现在使用的COM选项卡。 而且挑,说:“ Microsoft Excel 15.0 Object Library
”生成互操作类型为使用Excel的一个程序。 如果您加载一个旧的项目,以前使用的PIA然后就删除这些引用程序集,并从COM选项卡中添加他们回来。
请注意,功能丧失,故意针对你实际上并没有安装在你的dev的机器是比较困难的一个老版本的Office。 如果这是一个要求,那么你仍然需要该版本的PIA的,强制嵌入互操作类型为True在属性窗口。 其实这样做是有问题的,微软也很难保持新的Office版本与旧版本完全兼容。 他们现在已经坚持了15年,但它已经正在失去动力。 最坏的情况是针对比你在计算机上安装一个新的版本,这容易使你的程序崩溃非常难以诊断诸如异常AccessViolationException
。
请注意,你必须做出稍微修改代码,使其能够工作。 合成“ XxxxClass
”类没有被嵌入,只是“ Xxxx
”的接口。 简单地删除单词“ Class
从新声明”。
2015年VS社区与Office 365 - 不论什么原因,从添加COM对象不起作用。 解决的办法是进入GAC,找到互操作程序集,将它们复制到一个临时目录,然后添加到您的项目像任何DLL。
另外,如果你不知道现在的Windows 8确实有旧版本的.NET框架,但它们不是默认安装的。 进入程序功能--->添加功能到Windows ---->和第一个复选框应该是.NET 3.0和2.0可能。 请注意,如果你是一个WSUS服务器上,你需要告诉Windows从Windows Update服务器抓取文件。 希望能帮助到你!
据官方统计存在PIA的办公室没有向后兼容性。 事实上,它的工作原理。
为了向后兼容的原因我使用的是PIA为Office XP,因为好几年了,它工作正常与Office XP,2003,2007年和2010年(尚未与2013测试),并在Windows XP,Vista中,7和8。
为了与不同版本的Windows兼容,我使用.NET Framework 3.5。
对于未来......这取决于你正在与PIA做什么。 如果可能的话,是远远不如直接处理Open XML文件或创建的Word / Excel中的加载项。
我刚刚发现,在Visual Studio 2013 Express不具备办公支持了。 所以,你至少需要亲的版本,使其工作。