我将C#用于.NET。我知道如何以编程方式检测.NET程序集的CLR版本,但是无法找到如何以编程方式检测代码中的C#版本。有人知道吗?TIA。
生成程序集时,C#源代码已转换为IL。使用哪个C#版本生成IL(或者实际上,如果使用C#)不再相关,也不再存储该信息。
有些旧版C#不会使用IL功能(例如,对可为空的引用类型和异步流的支持)。如果IL包含此类构造,则可以排除较旧的C#版本。做出这样的决定是非常重要的。
这是汇编格式的细分(单击以浏览该系列的第二篇文章)。您将看到没有描述生成程序集的语言或版本的信息。
https://www.red-gate.com/simple-talk/blogs/anatomy-of-a-net-assembly-pe-headers/