5

我已经下载了 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 很好。

4

1 回答 1

8

引擎需要引用 System.Linq 命名空间所在的程序集 (System.Core.dll)

engine.AddReference(typeof(System.Linq.Enumerable).Assembly.Location);

这需要在创建会话之前完成。

于 2013-03-09T08:34:43.777 回答