.Net运行时编译器是否支持C#3.0?

时间:2008-11-13 07:56:47

标签: c# .net

看起来运行时编译器不支持与命令行编译器相同的语言,所以如果你想使用lambda表达式,扩展方法或LINQ,那么你就会陷入困境。

这里有更多细节:

http://metadatalabs.com/blog/

这是正确的还是有解决方法? (当然,没有产生命令行编译器。)

4 个答案:

答案 0 :(得分:2)

我一直在使用它,在使用.Net 3.5进行编译时似乎有效。

CodeDomProvider provider = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v3.5" } });

答案 1 :(得分:2)

查看CSharpCodeProvider constructor的文档:

  

providerOptions的值是   从中获得   配置文件中的元素。您   可以识别出的版本   你想要使用的CSharpCodeProvider   指定   元素,提供“CompilerVersion”   作为选项名称,并提供   版本号(例如,“v3.5”)   作为期权价值。你必须先行   带小写的版本号   “V”。

答案 2 :(得分:1)

这家伙的博客似乎有答案

CodeDomProviders

看起来工厂默认它返回2.0的实例。

这似乎是一种非常疯狂的技巧。某个地方保罗格雷厄姆哭了。

答案 3 :(得分:0)

我没试过,但听起来很疯狂......

将来不会出现问题,因为.NET团队将把C#编译器作为服务提供,这意味着您可以在代码中使用真正的C#编译器。看一下这个视频:

http://channel9.msdn.com/pdc2008/TL16/