我在这里有点新,这是我的第一个问题。所以当我做错事时请不要对我发火(:
我的问题:我试图在运行时编译 C# 源代码,使用 CSharpCodeProvider
.
除非我使用以下方法将 CompilerVersion 更改为“v2.0”,否则它可以毫无问题地编译:
Dictionary<string, string> provOptions = new Dictionary<string, string>();
provOptions.Add("CompilerVersion", "v2.0");
CSharpCodeProvider provider = new CSharpCodeProvider(provOptions);
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
最佳答案
我不会说一些愚蠢的话,但是 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);
};
https://stackoverflow.com/questions/7949218/