哪些C#编译器错误没有记录?

时间:2009-12-08 20:41:06

标签: c# compiler-construction compiler-errors

这是一个未记录的可能的C#编译器错误的集合。

如果您遇到这样的错误,请在此处列出答案:

  • 错误编号(CS nnnn
  • 相关的错误消息
  • 如果可能的话,会产生一小段代码,会产生错误

实施例

  

CS0224:

     
    

使用vararg的方法不能是通用的,是通用类型,或者有params参数

  
     

制作人:

int Foo<T>(__arglist) { return 0; }

如果有人已经发布了您遇到错误的答案,请编辑该答案以添加其他详细信息。

The list of documented errors can be found on MSDN。似乎有很多人失踪......

5 个答案:

答案 0 :(得分:4)

在编译器字符串资源表中找到,但在MSDN Library索引中找不到。其中许多肯定是过时的,有些闻起来像有趣的无证功能,如支持模块和测试。检查了CS2000:

CS0018:运营商'xxx'尚未实施
CS0240:'xxx'不能同时抽象和密封(现在CS0418)
CS0679:其他语言可能允许覆盖内部虚拟成员'xxx' CS0767:不能使用指定的类型参数继承接口'xxx',因为它会导致方法'yyy'包含仅在ref和out上有所不同的重载 CS0846:表达式树可能不包含使用可选参数的调用或调用 CS0847:表达式树可能不包含索引属性
CS0848:索引属性'xxx'具有必须提供的非可选参数
CS0849:索引属性'xxx'必须具有所有参数可选
CS0850:'xxx'的部分声明必须具有相同的类型参数名称和方差修饰符 CS0851:使用'is'来测试与'dynamic'的兼容性与测试与'object'的兼容性基本相同,并且对于所有非null值都将成功 CS1114:嵌入式互操作类型'xxx'上的成员'yyy'在调试时无法评估,因为它从未在程序中引用。在调试时,请考虑将源对象首先输入为“dynamic”,或者将“Embed Interop Types”属性设置为false CS1543:添加的模块'xxx'具有未解析的类型'yyy'的引用 CS1544:添加了模块'yyy'引用模块'xxx',未添加
CS1595:代表'xxx'有一些无效的参数
CS1735:忽略/ win32manifest为模块,因为它仅适用于组件
CS1736:无法将'xxx'转换为委托,因为块中的某些返回类型不能隐式转换为委托返回类型
CS1737:预期参数
CS1738:命名参数规范必须在所有固定参数出现后出现 指定。请使用语言版本7.2或更高版本以允许非尾随主要参数。
CS1739:/ appconfig给出的文件名太长或无效。在Roslyn(C#v6)中重新使用:'M'的最佳重载没有名为'x'的参数。
CS1903:为'/ test'选项提供无法识别的值'xxx' CS1904:'xxx'不是有效的警告编号

答案 1 :(得分:2)

<强> CS1669:

__ arglist在此上下文中无效

制作人:

delegate int Bar(__arglist);

答案 2 :(得分:2)

<强> CS0002:

无法从资源加载消息字符串

制作人:

最有可能是由于字符串表资源损坏或cscui.dll完全丢失,因此无法显示任何错误消息。参考问题is here

答案 3 :(得分:1)

更像Leppie的例子,在编译器字符串资源表中找到,可能是由未记录的关键字触发的:

CS0190:__ arglist构造仅在变量参数方法
中有效 CS0224:使用vararg的方法不能是通用的,是通用类型,或者是参数数组
CS0257:__ arglist参数必须是形式参数列表中的最后一个参数

答案 4 :(得分:0)

CS1738:

已命名的自变量规范必须在所有固定自变量都被 指定。请使用语言版本7.2或更高版本以允许使用非跟踪主参数。

生产者

string str = GetNewString(isAllowed: isUserAllowed, str);
  

潜在的解决方案:升级到C#7.2版或更高版本

     

右键单击要升级的项目->属性->构建->高级->语言版本。

     

Upgrade to latest minor version of C#