Question

Quand je tente d'importer l'espace de noms System.Linq compilateur Boo, je reçois cette erreur:

  

Boo.Lang.Compiler.CompilerError:

     

Namespace 'System.Linq' introuvable, peut-être vous avez oublié d'ajouter une référence d'assemblage?

J'utilise "Rhino.DSL.dll" et mon code moteur DSL est ici:

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());
    }
}
Était-ce utile?

La solution

Pourquoi avez-vous besoin dans votre System.Linq DSL? Sytem.Linq doit être « caché » dans votre cadre. Outre l'utilisation de Linq à Boo, il est un peu de bavard (à mon avis) et votre DSL devrait cacher verbeux choses ...

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

A propos de l'utilisation du System.Linq, n'a pas essayé, mais je l'ai trouvé ce lien Boo Markmail , où le code ci-dessus ... copie n'a été transmise

Autres conseils

Essayez d'ajouter une référence à l'ensemble System.Core à votre projet. La plupart des classes dans l'espace de noms System.Linq se trouvent dans cette assemblée.

Si cela ne fonctionne pas, vous pouvez également essayer d'ajouter une référence à System.Data.Linq.

Et à l'avenir, ne pas sous-estimer l'utilité des messages d'erreur fournis par le compilateur. Oui, parfois ils sont parfois énigmatiques et d'autres, ils sont même trompeurs. Mais ils sont certainement un bon endroit pour commencer quand vous essayez de comprendre pourquoi quelque chose ne compilera pas que vous vous attendiez au travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top