在Visual Studio中设置Embed Interop Types true和false有什么区别?

在Visual Studio中,向项目添加一个引用时,属性窗口有一个选项Embed Inteop Types ,我们应该将它设置为True还是False ? 有什么不同?

由于我们有很多的项目,其中一些项目的参考被设定为False ,其他项目被设定为True ,这完全搞砸了。 而bulid服务器也有相同的警告:

“embedded式互操作程序集创build的参考”是什么意思?

因此,我们计划将所有Embed Inteop Types更改为False ,我们将获得哪些风险?

引入此选项是为了消除部署非常大的PIA(主互操作程序集)进行互操作的需要。

它只是embedded了所使用的托pipe桥接代码,允许您与非托pipe程序集进行通信,而不是embedded它,只是创build实际在代码中使用的内容。

阅读Scott Hanselman的博客文章,了解更多信息以及其他VS的改进。

至于是否build议,我不知道,因为我不需要使用此function。 一个快速的networkingsearch产生一些线索:

  • 在执行Visual Studio扩展性工作时检查您的Embed Interop Types标志
  • 部署主互操作程序集的痛苦

将这些文件全部变为false的唯一风险是PIA文件的部署更多,如果其中一些文件较大,则需要更大的部署。

我注意到,当它设置为false时,我可以使用debugging器查看一个项目的值。 当它被设置为true,我得到一个错误 – item.FullName.GetValueembedded式互操作types“FullName”不包含“QBFC11Lib.IItemInventoryRet”的定义,因为它没有在编译的程序集中使用。 考虑转换为对象或将“embedded互操作types”属性更改为true。