为什么C#编译器会为内部类生成CS0436警告?

为什么C#编译器会为内部类生成CS0436警告?,c#,warnings,compiler-warnings,C#,Warnings,Compiler Warnings,我在C#解决方案中使用JetBrains注释。我将注释类作为链接文件引入到解决方案的每个项目中。我不希望JetBrains注释成为我的公共界面的一部分,所以我将它们修改为内部的而不是公共的 但是,当我编译时,会收到很多警告CS0436,例如: C:\src\foo\bar.cs(12,29):警告CS0436:C:\src\Common\JetBrains\JetBrains.cs中的类型“JetBrains.Annotations.NotNullAttribute”与C:\src\blah\b

我在C#解决方案中使用JetBrains注释。我将注释类作为链接文件引入到解决方案的每个项目中。我不希望JetBrains注释成为我的公共界面的一部分,所以我将它们修改为内部的而不是公共的

但是,当我编译时,会收到很多警告CS0436,例如:

C:\src\foo\bar.cs(12,29):警告CS0436:C:\src\Common\JetBrains\JetBrains.cs中的类型“JetBrains.Annotations.NotNullAttribute”与C:\src\blah\bin\Debug\blah.dll中导入的类型“JetBrains.Annotations.NotNullAttribute”冲突。使用“C:\src\Common\JetBrains\JetBrains.cs”中定义的类型

但在JetBrains.cs中,NotNullAttribute是内部的:

internal sealed class NotNullAttribute : Attribute { }
我不明白为什么编译器会对导入其他程序集内部的类型发出警告。有什么想法吗?

发现了问题。我提到的“blah.dll”程序集在其AssemblyInfo.cs中包含以下内容:

[assembly: InternalsVisibleTo("my.other.assembly")]

谢谢大家的支持。

我也遇到了同样的问题,因为在References文件夹中有对同一项目的引用。ie:我的项目名称是Store,引用名称相同。我删除了它,问题解决了!祝你好运

你确定它也是
blah.dll中的内部文件吗?而这个组件的内部还没有被显示出来?是的,一个通用的JetBrains.cs文件被链接到两个项目中。我的JetBrains.cs文件中的所有类型都是内部类型。密封类中有受保护的还是私有的?如果是,则显示警告,因为在无法继承的类中定义protected/private没有任何意义。否,此处列出了整个类定义。(另外,你提到的警告是警告CS0628。)@Hugh:但是你在重建另一个项目之前重建了
blah.dll
?你能展示一个简短但完整的程序来演示这个问题吗?啊,这是在你收到问题的第一条评论中提出的。是的。不幸的是,我不知道这样一个属性的存在,所以我不知道这就是他的意思。