看起来运行时编译器不支持与命令行编译器相同的语言,所以如果你想使用lambda表达式,扩展方法或LINQ,那么你就会陷入困境。
这里有更多细节:
这是正确的还是有解决方法? (当然,没有产生命令行编译器。)
答案 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)
答案 3 :(得分:0)
我没试过,但听起来很疯狂......
将来不会出现问题,因为.NET团队将把C#编译器作为服务提供,这意味着您可以在代码中使用真正的C#编译器。看一下这个视频: