'class' : an assembly access specifier can only be applied to a managed class, interface or a value-type
When applied to a managed type, such as class or struct, the public and private keywords indicate whether the class will be exposed via assembly metadata. public and private cannot be applied to unmanaged classes.
When used with /com+, the following keywords indicate that a class is managed:
The following sample generates C3381:
public class A { // C3381. Remove public or make the class managed. }; void main() { }