2011-10-31 108 views
0

我在这里有点新,这是我的第一个问题。所以,请不要在我愤怒的时候我上来了问题(:编译时由CSharpCodeProvider编译错误

我的问题:我试图编译运行一个C#源代码,使用CSharpCodeProvider

它编译没有任何问题,除非我改变CompilerVersion为“2.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”

回答

4

我不会说一些愚蠢的,但lambda表达式和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

感谢你:)高兴它的工作! –