我收到了一位供应商的消息,说明他们将删除对Interop库的支持,因为:
从.NET 4.0开始,不推荐使用托管代码和本机代码之间基于互操作的通信
它是否正确?如果是这样,那么正确的方法是什么?为什么?我无法理解为什么从Interop管理COM对象是个坏主意.就我记忆中的所有Office产品而言,微软都这样做.
Han*_*ant 15
这将需要阅读茶叶,你绝对应该联系供应商并询问细节.但可以肯定的是,.NET 4.0中发生了一些重要的事情,它不再需要运送互操作库.从Office 2013开始,Microsoft Office也不再存在.
在VS2010和.NET 4.0中使用新的"嵌入互操作类型"功能非常优雅地解决了这个问题.也称为"无PIA"功能.添加对类型库的引用时,该选项会自动打开.效果就好像您已经在自己的源代码中声明了所有互操作类型.只是你使用的那些.对于Office互操作库特别有效,它们非常大.
为此功能提供支持的v4 CLR的基础更改是检查类型标识的新方法.具体到[ComImport]类型,当它们具有相同的[Guid]时,两种类型被认为是相同的.他们来自的组件不再重要.这淘汰了对PIA的需求.
您可能需要稍微更改工作流程,现在从COM选项卡中选择引用.如果您之前习惯于创建XxxxClass对象,可能是源代码中的一个小变化,您只需编辑它以创建Xxxx接口.并更改安装程序项目,无需再复制DLL.
总而言之,COM interop 在.NET 4.0中得到了显着改进,特别是C#语言的变化使其更易于使用.距即将死亡一百万英里:)
所以供应商可能会告诉你他们不会再出货互操作库了.因为你不再需要它们了.如果您不知道类型库的样子,请向供应商寻求帮助.