CA1017: Mark assemblies with ComVisibleAttribute

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at CA1017: Mark assemblies with ComVisibleAttribute.

TypeName|MarkAssembliesWithComVisible|
|CheckId|CA1017|
|Category|Microsoft.Design|
|Breaking Change|Non-breaking|

An assembly does not have the System.Runtime.InteropServices.ComVisibleAttribute attribute applied to it.

The ComVisibleAttribute attribute determines how COM clients access managed code. Good design dictates that assemblies explicitly indicate COM visibility. COM visibility can be set for a whole assembly and then overridden for individual types and type members. If the attribute is not present, the contents of the assembly are visible to COM clients.

To fix a violation of this rule, add the attribute to the assembly. If you do not want the assembly to be visible to COM clients, apply the attribute and set its value to false.

Do not suppress a warning from this rule. If you want the assembly to be visible, apply the attribute and set its value to true.

The following example shows an assembly that has the ComVisibleAttribute attribute applied to prevent it from being visible to COM clients.

Imports System

<Assembly: System.Runtime.InteropServices.ComVisible(False)>
Namespace DesignLibrary
End Namespace

Interoperating with Unmanaged Code
Qualifying .NET Types for Interoperation

Show: