我是个新手,这是我的第一个问题。所以,当我做错了什么事时,请不要对我发火(:
我的问题:我正在尝试使用CSharpCodeProvider在运行时编译C#源代码。
除非我使用以下命令将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“中编译得很好。
发布于 2011-10-31 09:41:22
我不会说一些愚蠢的话,但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版。
如果我错了,请不要对我发火:)
https://stackoverflow.com/questions/7949218
复制相似问题