2008-11-13 3 views
2

Похоже, что компилятор времени выполнения не поддерживает тот же язык, что и компилятор командной строки, поэтому, если вы хотите использовать лямбда-выражения, методы расширения или LINQ, ну, вы застряли.Поддерживает ли компилятор времени выполнения .Net C# 3.0?

Там более подробно здесь:

http://metadatalabs.com/blog/

Правильно ли это или есть работа вокруг? (Short нерестового компилятора командной строки, конечно.)

+0

Почему не создается компилятор командной строки, а не опция? Кажется, что действительное решение компилятора времени выполнения отказывается работать. – nlaq 2008-11-13 08:00:02

ответ

1

Этого парня, кажется, есть ответ

CodeDomProviders

выглядит как заводские настройки по умолчанию экземпляра он возвращается к 2.0.

Это кажется довольно сумасшедшей техникой. Где-то плачет Пол Грэм.

0

Я haven't пытался, но это звучит странно ..

В будущем, что привычка быть проблемой, так как команда .NET является получив компилятор C#, доступный как услуга, что означает, что вы можете работать с реальным компилятором C# в своем коде. Посмотрите на этом видео: блог

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

2

Я использую это, и это, кажется, работает при компиляции с использованием .Net 3.5

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

Посмотрите на документации CSharpCodeProvider constructor:

Значение providerOptions является , полученный из элемента в файле конфигурации. Вы можете определить версию CSharpCodeProvider вы хотите использовать по указав элемент, снабжая «CompilerVersion» в качестве имени параметра, и поставки номер версии (например, «v3.5») как значение параметра. Вы должны предшествовать номер версии с нижним регистром «v».

Смежные вопросы