我不得不将一个较旧的项目(在.Net 2中)导入到Visual Studio 2013中,它使用了Microsoft Primary Interop Assemblies.
Visual Studio说我需要添加对项目的引用.现在我去做了一些阅读,显然微软只发布了2010年办公室的PIA?(我有Office 2013)
现在我想知道的是.
我可以让它与Office 2013一起使用并向后兼容吗?
如果是这样,这是一条走向未来的好途径?它会兼容吗?因为我认为你需要.Net 2
(最迟)和Windows 8自带4.5而不是3(默认情况下),并且大多数新计算机都将拥有Office 2012或2013.
Hans Passant.. 122
PIA是一个历史工件,只有旧的.NET版本才需要(在v4之前).它们被"嵌入互操作类型"功能彻底而优雅地取代,也被称为"无PIA"功能.自Visual Studio 2010以来支持,在选择引用程序集时,您将在"属性"窗口中找到它.它默认为True
.一个好的视频覆盖的底层技术是可以在这里找到.
这就是微软不发布Office 2013 PIA的原因,他们希望您嵌入互操作类型.
该功能非常理想,它可以避免您的客户不得不在他的机器上安装PIA,并让您将它们包含在安装人员中.在没有照顾它的情况下解决问题,这是一个完全太常见的事故.此外,Office的PIA非常大,嵌入互操作类型的巨大优势是您的程序集只包含您实际使用的类型.许多兆字节减少到几千字节.
工作流程略有不同.Microsoft.Office.Interop
现在,您可以使用COM选项卡,而不是在"添加引用"对话框(.NET Framework选项卡)中添加对程序集的引用.然后选择" Microsoft Excel 15.0 Object Library
"来生成使用Excel的程序的互操作类型.如果您加载以前使用过PIA的旧项目,则只需删除这些引用程序集并将其从COM选项卡中添加回来.
请注意,功能丢失,故意针对您在开发计算机上实际未安装的旧版Office更加困难.如果这是一个要求,那么您仍然需要该版本的PIA,在"属性"窗口中强制将"嵌入互操作类型"设置为"真".实际上这样做是值得怀疑的,微软很难保持新的Office版本与旧版本完全兼容.他们已经保持了15年,但它已经失去了动力.最糟糕的情况是针对比您在计算机上安装的更新版本,这可能会导致您的程序崩溃而非常难以诊断异常AccessViolationException
.
请注意,您必须对代码进行少量修改才能使其正常工作.合成的" XxxxClass
"类没有嵌入,只是" Xxxx
"接口.只需从新陈述中删除" Class
" 一词即可.
PIA是一个历史工件,只有旧的.NET版本才需要(在v4之前).它们被"嵌入互操作类型"功能彻底而优雅地取代,也被称为"无PIA"功能.自Visual Studio 2010以来支持,在选择引用程序集时,您将在"属性"窗口中找到它.它默认为True
.一个好的视频覆盖的底层技术是可以在这里找到.
这就是微软不发布Office 2013 PIA的原因,他们希望您嵌入互操作类型.
该功能非常理想,它可以避免您的客户不得不在他的机器上安装PIA,并让您将它们包含在安装人员中.在没有照顾它的情况下解决问题,这是一个完全太常见的事故.此外,Office的PIA非常大,嵌入互操作类型的巨大优势是您的程序集只包含您实际使用的类型.许多兆字节减少到几千字节.
工作流程略有不同.Microsoft.Office.Interop
现在,您可以使用COM选项卡,而不是在"添加引用"对话框(.NET Framework选项卡)中添加对程序集的引用.然后选择" Microsoft Excel 15.0 Object Library
"来生成使用Excel的程序的互操作类型.如果您加载以前使用过PIA的旧项目,则只需删除这些引用程序集并将其从COM选项卡中添加回来.
请注意,功能丢失,故意针对您在开发计算机上实际未安装的旧版Office更加困难.如果这是一个要求,那么您仍然需要该版本的PIA,在"属性"窗口中强制将"嵌入互操作类型"设置为"真".实际上这样做是值得怀疑的,微软很难保持新的Office版本与旧版本完全兼容.他们已经保持了15年,但它已经失去了动力.最糟糕的情况是针对比您在计算机上安装的更新版本,这可能会导致您的程序崩溃而非常难以诊断异常AccessViolationException
.
请注意,您必须对代码进行少量修改才能使其正常工作.合成的" XxxxClass
"类没有嵌入,只是" Xxxx
"接口.只需从新陈述中删除" Class
" 一词即可.