在 Roslyn CP2 中包含 System.Linq 时出现 CompilationErrorException

问题描述 投票:0回答:1

我已经下载了 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 则正常。

c# linq roslyn
1个回答
10
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.