Frage

Wenn ich versuche, das zu importieren System.Linq Namespace zum Boo -Compiler, ich erhalte diesen Fehler:

Boo.lang.compiler.comPilerError:

Namespace 'System.linq' nicht gefunden, vielleicht haben Sie vergessen, eine Montagereferenz hinzuzufügen?

Ich verwende "Rhino.dsl.dll" und mein DSL -Engine -Code ist hier:

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());
    }
}
War es hilfreich?

Lösung

Warum brauchen Sie System.linq in Ihrem DSL? SYTEM.LINQ muss in Ihrem Rahmen "versteckt" sein. Neben LINQ in Boo ist es nicht nur ausführlich (meiner Meinung nach) und Ihre DSL sollte dieses ausführliche Zeug verbergen ...

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

Über die Verwendung des Systems.LINQ, habe nicht versucht, aber ich habe diesen Link gefunden Boo Markmail, wo der obige Code kopiert wurde ...

Andere Tipps

Fügen Sie einen Verweis auf die hinzu System.Core Montage zu Ihrem Projekt. Die meisten Klassen in der System.Linq Der Namespace befindet sich in dieser Baugruppe.

Wenn das nicht funktioniert, können Sie auch versuchen, eine Referenz hinzuzufügen System.Data.Linq.

Unterschätzen Sie in Zukunft die Nützlichkeit der vom Compiler bereitgestellten Fehlermeldungen nicht. Ja, manchmal sind sie kryptisch und manchmal sind sie sogar irreführend. Aber sie sind sicherlich ein guter Ausgangspunkt, wenn Sie versuchen herauszufinden, warum etwas nicht kompiliert wird, das Sie erwartet haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top