How can I import the System.Linq namespace to Boo?

Omid-RH picture Omid-RH · Jan 3, 2011 · Viewed 15.6k times · Source

When I try to import the System.Linq namespace to Boo compiler, I get this error:

Boo.Lang.Compiler.CompilerError:

Namespace 'System.Linq' not found, maybe you forgot to add an assembly reference?

I use "Rhino.DSL.dll" and my DSL engine code is here:

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());
    }
}

Answer

Cody Gray picture Cody Gray · Jan 3, 2011

Try adding a reference to the System.Core assembly to your project. Most of the classes in the System.Linq namespace are found in that assembly.

If that doesn't work, you might also try adding a reference to System.Data.Linq.

And in the future, don't underestimate the usefulness of the error messages provided by the compiler. Yes, sometimes they are cryptic and other times they are even misleading. But they're certainly a good place to start when you're trying to figure out why something won't compile that you expected to work.