title: Why does the C# compiler generate CS0436 warnings for internal classes?
body: <p>I'm using the JetBrains annotations in a C# solution. I've brought the annotations classes into each project of the solution as a linked file. I didn't want the JetBrains annotations to be part of my public interface, so I modified them to be internal rather than public.</p>
  
  <p>However, when I compile I get lots of warnings CS0436, for example:</p>
  
  <blockquote>
    <p>C:\src\foo\bar.cs(12,29): warning CS0436: The type 'JetBrains.Annotations.NotNullAttribute' in 'C:\src\Common\JetBrains\JetBrains.cs' conflicts with the imported type 'JetBrains.Annotations.NotNullAttribute' in 'c:\src\blah\bin\Debug\blah.dll'. Using the type defined in 'C:\src\Common\JetBrains\JetBrains.cs'.</p>
  </blockquote>
  
  <p>But in JetBrains.cs, NotNullAttribute is internal:</p>
  
  <pre><code>internal sealed class NotNullAttribute : Attribute { }
  </code></pre>
  
  <p>I don't understand why the compiler is warning about importing types that are internal to another assembly. Any ideas?</p>