Ошибка компиляции при компиляции с помощью CSharpCodeProvider - PullRequest
0 голосов
/ 31 октября 2011

Я здесь новичок, и это мой первый вопрос. Поэтому, пожалуйста, не злитесь на меня, когда я делаю что-то не так (:

Моя проблема: я пытаюсь скомпилировать исходный код C # во время выполнения, используя CSharpCodeProvider.

Он компилируется без каких-либо проблем, если я не изменил CompilerVersion на "v2.0", используя это:

Dictionary<string, string> provOptions = new Dictionary<string, string>();
provOptions.Add("CompilerVersion", "v2.0");

CSharpCodeProvider provider = new CSharpCodeProvider(provOptions);

Показывает ошибки в 15-й строке:

15: System.AppDomain.CurrentDomain.AssemblyResolve += (sender, args2) =>
16: {
17:     byte[] assemblydata = Convert.FromBase64String(data);
18:     return Assembly.Load(assemblydata);
19: };

Например:

Line 15, directly after "sender": ) expected

Line 15, directly after "sender": , invalid expression

И еще немного. Я понятия не имею, откуда возникла проблема. Когда я использую Visual Studio, он прекрасно компилируется с "v2.0"

1 Ответ

4 голосов
/ 31 октября 2011

Я бы не сказал что-то глупое, но лямбда-выражение и linq были введены в C # 3.0, а не в C # 2.0.

Вместо использования += (sender, args2) =>, почему вы не просто используете анонимный делегат?C # 2.0 поддерживает это.

System.AppDomain.CurrentDomain.AssemblyResolve += delegate (object sender, ResolveEventArgs args)
{
    byte[] assemblydata = Convert.FromBase64String(data);
    return Assembly.Load(assemblydata);
};

Или измените компилятор на версию 3.0.

Если я ошибаюсь, пожалуйста, не злитесь на меня:)

...