当我尝试将System.Linq
命名空间导入Boo编译器时,出现此错误:
Boo.Lang.Compiler.CompilerError:
找不到命名空间'System.Linq',也许您忘了添加程序集引用?
我使用“Rhino.DSL.dll”,我的DSL引擎代码在这里:
public class MyDslEngine : DslEngine
{
protected override void CustomizeCompiler(BooCompiler compiler, CompilerPipeline pipeline, string[] urls)
{
pipeline.Insert(1, new AnonymousBaseClassCompilerStep(typeof(DslBase), "Prepare",
"System.Linq",
"Azarakhsh.Framework.Repository" //it's my repository framework
));
pipeline.Insert(2, new UseSymbolsStep());
pipeline.Insert(3, new RunScriptCompilerStep());
}
}
答案 0 :(得分:4)
尝试将System.Core
程序集的引用添加到项目中。 System.Linq
命名空间中的大多数类都可以在该程序集中找到。
如果这不起作用,您也可以尝试添加对System.Data.Linq
的引用。
将来,不要低估编译器提供的错误消息的用处。是的,有时它们是神秘的,有时甚至是误导性的。但是当你试图弄清楚为什么某些东西无法编译你期望工作的时候,它们肯定是一个很好的起点。
答案 1 :(得分:3)
为什么你的DSL需要System.Linq? Sytem.Linq必须在您的框架中“隐藏”。除了在Boo中使用Linq之外,它有点冗长(在我看来),你的DSL应该隐藏这些冗长的东西......
import System.Linq.Enumerable from System.Core
bar = List of string()
bar.Add("foo")
bar.Add("baz")
baz = bar.Where({x as string | x =="baz"}).Single()
关于使用System.Linq,还没试过,但我找到了这个链接Boo Markmail,上面的代码被复制了......