我已经下载了 Roslyn CTP 并遇到了以下错误。执行
session.Execute(@"using System.Linq;");
行时抛出 CompilationErrorException 并显示以下消息:
(1,14):错误CS0234:命名空间“System”中不存在类型或命名空间名称“Linq”(您是否缺少程序集引用?)
我的代码是:
namespace RoslynError
{
using System;
using Roslyn.Scripting;
using Roslyn.Scripting.CSharp;
internal class RoslynError
{
static void Main(string[] args)
{
var engine = new ScriptEngine();
Session session = engine.CreateSession();
session.Execute(@"using System.Collections;");
session.Execute(@"using System.Linq;");
Console.ReadKey();
}
}
}
我特别困惑为什么 System.Linq 行会抛出错误,而 System.Collections 则正常。
引擎需要引用 System.Linq 命名空间所在的程序集 (System.Core.dll)
engine.AddReference(typeof(System.Linq.Enumerable).Assembly.Location);
这需要在创建会话之前完成。