2011-01-03 16 views
4

私はコンパイラをブーイングするSystem.Linq名前空間をインポートしようとすると、私はこのエラーを取得:System.Linq名前空間をBooにインポートするにはどうすればよいですか?

Boo.Lang.Compiler.CompilerError:

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

私は「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()); 
    } 
} 
+4

おそらく、あなたはアセンブリのリファレンスを追加するのを忘れましたか?ほとんどのSystem.LinqクラスはSystem.Coreアセンブリに含まれています。 – dtb

+2

だから何が問題なのですか? Vodeを閉じる。エラーを読んで、それが言うようにアセンブラ参照を追加します。 – TomTom

+1

Hey TomTomコードを読んで答えてください。おかげで –

答えて

3

あなたのDSLにSystem.Linqが必要なのはなぜですか? Sytem.Linqは、フレームワーク内で「非表示」にする必要があります。ブーでのLINQを使用してほかに、それは(私の意見では)冗長でちょっとだし、この冗長なものを非表示にするあなたのDSL ... System.Linqの使用について

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

は、試していませんが、私は、このリンクを見つけたBoo Markmail上のコードはコピーされました...

+0

感謝jjchiwiは私のDSL –

+0

の 'FirstOrDefault()'のような 'System.Linq'関数を使い、このエラーが出ます: .IQueryable ... –

4

System.Coreアセンブリへの参照をプロジェクトに追加してみてください。System.Linq名前空間内のほとんどのクラスは、そのアセンブリ内にあります。

これでうまくいかない場合は、System.Data.Linqへの参照を追加することもできます。

今後、コンパイラが提供するエラーメッセージの有用性を過小評価しないでください。はい、時々彼らは潜在的に誤解を招くことがあります。しかし、彼らは確かにあなたが働くことを期待しているものがコンパイルされない理由を理解しようとしているときに始めるのが良い場所です。

+0

余分な説明がありますが、私のプロジェクトはSystem.Coreへの参照を持っています –

+0

@HLDN:私はちょうど私の答えを更新しました。 'System.Data.Linq'への参照も含まれていますか? –

+0

私は "System.Data.Linq"を追加してもエラーは報告されませんが、 "System.Linq"を使用して追加する必要があります。 –

関連する問題