2011-10-31 14 views
0

ここでちょっと新しくて、これが私の最初の質問です。CSharpCodeProviderでコンパイルするとコンパイルエラーが発生する

私の問題:私はdoinのだときに私に何かを間違って(激怒しないでください。私はCSharpCodeProviderを使用して、ランタイムでのC#ソースコードをコンパイルしようとしている

をそれがない限り、何の問題もなくコンパイル例えば

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

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

CSharpCodeProvider provider = new CSharpCodeProvider(provOptions); 

それはこれです15行目でエラーを示しています。私はこの使用して、 "V2.0" にCOMPILERVERSIONを変更

Line 15, directly after "sender":) expected 

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

さらにいくつか。 問題の原因がわかりません。私がVisual Studioを使用すると、 "v2.0"でうまくコンパイルされます

答えて

4

私は何か愚かではありませんが、ラムダ式と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に変更します。

私が間違っている場合は私に激怒しないでください:)

+0

(あなたの助けをありがとうございました: それは匿名デリゲートで動作し、あなたに – PeterPan

+0

おかげ:)それが働いた嬉しいです! –

関連する問題