我一直标记着我的.NET程序集对于COM来说是可见的,我认为我不知道什么时候有人可能需要从COM调用它们。我也开始使用的FxCop并开始看到从代码分析这样的警告:为什么要标记组件ComVisible(true)不鼓励?
CA1017:Microsoft.Design:因为“MyLibrary.dll”公开外部可见的类型,在组件级别与标记有ComVisible特性(假)标记,然后纪念集会中的所有类型应该暴露在COM客户标记有ComVisible特性(真)
是有一些原因,你为什么会不只是要所有暴露给COM的公共类型的?我猜测有,但我无法想象这是什么原因。如果有的话,似乎显得很不方便。
问题不在于如何解决。问题是这个警告首先试图警告的是什么。 – sharptooth 2015-04-29 08:07:00
AS MSDN还定义了此警告的根本原因,即“组件对象模型(COM)可见类型派生自不可见COM的类型。” – 2015-04-29 08:36:55
即使没有警告,这也不是一个难以发现的问题。一个非常粗糙和微妙的部分是,你将拥有一个ComVisible程序集在COM中注册的所有公共内容。 – sharptooth 2015-04-29 08:42:04