首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CSharpCodeProvider编译时出现编译器错误

使用CSharpCodeProvider编译时出现编译器错误
EN

Stack Overflow用户
提问于 2011-10-31 09:31:12
回答 1查看 322关注 0票数 0

我是个新手,这是我的第一个问题。所以,当我做错了什么事时,请不要对我发火(:

我的问题:我正在尝试使用CSharpCodeProvider在运行时编译C#源代码。

除非我使用以下命令将CompilerVersion更改为"v2.0“,否则它将不会出现任何问题:

代码语言:javascript
复制
Dictionary<string, string> provOptions = new Dictionary<string, string>();
provOptions.Add("CompilerVersion", "v2.0");

CSharpCodeProvider provider = new CSharpCodeProvider(provOptions);

它在第15行显示错误,如下所示:

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

例如:

代码语言:javascript
复制
Line 15, directly after "sender": ) expected

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

还有更多。我不知道问题是从哪里来的。当我使用Visual Studio时,它在"v2.0“中编译得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-31 09:41:22

我不会说一些愚蠢的话,但lambda表达式和linq是在C# 3.0中引入的,而不是在C# 2.0中引入的。

为什么不使用匿名委托而不使用+= (sender, args2) =>呢?C# 2.0支持这一点。

代码语言:javascript
复制
System.AppDomain.CurrentDomain.AssemblyResolve += delegate (object sender, ResolveEventArgs args)
{
    byte[] assemblydata = Convert.FromBase64String(data);
    return Assembly.Load(assemblydata);
};

或者将编译器更改为3.0版。

如果我错了,请不要对我发火:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7949218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档