解决方法
CLS代表公共语言规范.为了简化,它基本上是所有.NET语言必须知道的最小类型和标识符.例如,Int32符合CLS:任何.NET语言都必须能够处理它. UInt32不是.由于您的代码是私有的,因此其他语言的其他程序集不会访问它,因此它与CLS兼容无关紧要.
有关CLS合规性的更多信息,请参见this MSDN page.
编辑:我认为您误解了CLS的合规性.这不是关于代码是否可以编译成IL. UInt32可以在IL中使用.名为“©”的标识符也是如此. CLS合规性只是语言互操作性的最小合同. CLR支持的内容比CLS合规性的限制更广泛.
编辑2:是的,你是对的.即使有直接映射到IL,也需要.NET语言来支持Int32而不是UInt32.请参阅指针,它们在IL和C#中受支持,但不符合CLS. VB.NET没有实现对它们的支持,仍然符合CLS.