我们有一个.NET应用程序,它使用不同DLL中的COM对象,这些DLL也在我们应用程序的VB6部分中使用。当引用COM库时,Visual Studio 2012会创建一个Interop.x.DLL并引用它。我应该从构建机器上分发Interop.x.DLL还是使用某个.NET命令行工具重新生成它?哪个工具?那么,在部署引用COM的.NET应用程序时,最佳实践是什么呢?
我们有一个.NET应用程序,它使用不同DLL中的COM对象,这些DLL也在我们应用程序的VB6部分中使用。当引用COM库时,Visual Studio 2012会创建一个Interop.x.DLL并引用它。我应该从构建机器上分发Interop.x.DLL还是使用某个.NET命令行工具重新生成它?哪个工具?那么,在部署引用COM的.NET应用程序时,最佳实践是什么呢?
不必了,自从VS2010和.NET 4.0推出后就不再需要了。您只需将互操作程序集引用的Embed Interop Types
属性设置为True即可,这是默认设置。
启用此选项后,互操作类型会被复制到您自己的程序集中,就好像您自己手动编写了[ComImport]
声明一样,而且仅会复制您实际在代码中使用的类型。这个功能对于大型组件来说效果最好,尤其是Microsoft.Office.Interop组件非常大。当然,对于小组件也很方便,因为您不再需要部署互操作程序集。