C# C语言版本和CLR

C# C语言版本和CLR,c#,.net,compilation,clr,C#,.net,Compilation,Clr,我一直在阅读各种关于C#版本的文章和问题(包括Jon Skeet的答案)。然而,我无法理解一件简单的事情(我希望如此)。CLR、.NET和C#版本之间有何关联?例如,是否可以使用支持C#6的C#编译器并在CLR 1下运行生成的IL代码?例如,当添加了对async/await的支持时,CLR是必须更改还是仅仅因为async/await编译成了普通IL就不需要更改?我非常熟悉.NET的基础知识,但是,我不知道每个版本对C#做了哪些更改。如何将对async/await、lambdas和其他内容的支持添

我一直在阅读各种关于C#版本的文章和问题(包括Jon Skeet的答案)。然而,我无法理解一件简单的事情(我希望如此)。CLR、.NET和C#版本之间有何关联?例如,是否可以使用支持C#6的C#编译器并在CLR 1下运行生成的IL代码?例如,当添加了对async/await的支持时,CLR是必须更改还是仅仅因为async/await编译成了普通IL就不需要更改?我非常熟悉.NET的基础知识,但是,我不知道每个版本对C#做了哪些更改。如何将对async/await、lambdas和其他内容的支持添加到语言中?他们是否需要对.NET framework或CLR进行更改


表示C#4需要CLR 4。什么是需要?据我所知,某些功能在较低的CLR版本下仍然可以工作。

如果您根据CLR版本X进行编译,则只能在该版本上运行代码

为了向后兼容,每个CLR版本都会将较旧的CLR带到您的计算机。因此,如果安装CLR 4,它也将安装CLR 2和CLR 1


因此,您可以在安装了CLR 4的计算机上运行针对CLR 1编译的代码。但不是相反。

答案是一个很好的起点。我不是说过我看过了这个答案,并且知道了相应的版本吗?它并没有真正回答我想要知道的;我想我为这个问题选择了一个糟糕的措辞。