c# - 通过 CSharpCodeProvider 编译时出现编译器错误

我在这里有点新,这是我的第一个问题。所以当我做错事时请不要对我发火(:

我的问题:我试图在运行时编译 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”编译得很好

最佳答案

我不会说一些愚蠢的话,但是 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/

相关文章:

xml - 使用Perl写入xml时遇到问题

makefile - 在 Fedora 17 中使用 'make' 命令编译时出错

compilation - javassist编译错误没有这样的类

c# - C#编译错误: “The name does not exist in the curre

opengl - glGetShaderiv()GL_COMPILE_STATUS返回GL_FALS

gwt - 如何解决,Gwt编译错误: refers to missing type “classn

android - 编译android 4.0.3时找不到-ltinfo

vb.net - 在VB.net故障中引发事件

objective-c - Obj-C 中的乘法问题

android - java.beans.VetoableChangeListener无法解析