2011-07-11 3 views
4

から私はにマージされた.dll LinqBridgeを持っているJSON.NETを使用しています。私は、LINQのを使用しようとするとLinqBridgeでもSystem.Linqをインポートした後、私は次のことを受け取る、LINQのは、.NET 2からアクセスすることができますエラー:アクセスLinqBridge JSON.NETのDLL

Error 13 Could not find an implementation of the query pattern for source type 'int[]'. 'Where' not found. Are you missing a reference to 'System.Core.dll' or a using directive for 'System.Linq'? C:\Users\chrisl\Desktop\SoftTokens\Windows Desktop Soft-Token\Program.cs 27 25 WindowsSoftToken 

私はLinqBridgeを含めるようにしようとJSON.NETはすでにそれを含んでいるので、それから、私はこの警告を受けます。また、私は非効率的である、二度同じコンポーネントが含まれている:私は、オブジェクトブラウザでNewtonsoft.Json.Net20を閲覧

Warning 2 The predefined type 'System.Action' is defined in multiple assemblies in the global alias; using definition from 'c:\Users\chrisl\Desktop\SoftTokens\Windows Desktop Soft-Token\libs\Newtonsoft.Json.Net20.dll' WindowsSoftToken 

場合、私はShow hidden types and methodsをslectedた後も、System.Linqのが空表示されていることを参照してください。

JSON.NET DLLからLinqにアクセスすることはできますか、エラーメッセージは表示されませんか?

+0

対象とする.NETフレームワークのバージョンは何ですか? JSON.Netのどのバージョンですか? –

+0

@Mike:JSON.NET 4.0およびターゲット.NET 2 – Casebash

+0

このケースの問題を投稿しました。私は同じ問題があり、現時点ではLinqBridge.csなしでJson.NETプロジェクトを再コンパイルすることに決めました:https://github.com/JamesNK/Newtonsoft.Json/issues/8 –

答えて

6

LINQBridgeアセンブリ内のLINQクエリ演算子を提供するEnumerable静的クラスは、System.Linq名前空間に引き続き公開されています。

最初のエラーメッセージの指示に従って、System.Linqのusingディレクティブを使用する必要があります。

更新:

それは私が最初に気づいていなかったNewtonsoft.Json.Net20.dllにマージされていますLINQBridgeアセンブリ「インターナライズ」されていますが判明。これは、コンパイラが「クエリパターンを実装する」必要があるEnumerable型をコードが参照できないことを意味します。したがって、LINQBridgeアセンブリを自分で参照する必要がありますが、前述のように重複する定義についての警告が表示されます。

プロジェクトのプロパティの[ビルド]タブに移動し、[警告を表示しない]ボックスに「1685」と入力すると、重複するクラスの警告を無効にできます。

しかし、LINQBridgeでマージせずにソースからJSON.netの独自のバージョンを構築する方がいいでしょう。