2012-07-11 58 views
5

私は自分のmvcプロジェクトで遊んでいます。Json.NET dllの異なるバージョンの参照

  1. 私はその依存関係の1つとして、順番にNewtonsoft.Json.dll 4.0.0.0(古い)を使用してプロジェクトにSocialAuth.Netというパッケージを、Nugeted。

  2. 私は自分自身もJson.Netを必要としていたので、新しいバージョン4.5.0.0(新しい)の新しいバージョン、So Nugeted Json.NETが必要でした。

問題が発生します。私のかみそりビューで "ViewBag.Title = ...." それは赤い下線が言っている:

Warning 1 c:\users\admin\documents\visual studio 2010\Projects\WebApp\WebApp\Views\Home\Index.cshtml: ASP.NET runtime error: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

これは私のweb.configファイルのJSONの一部です:だから

<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> 
    </dependentAssembly> 

  1. Newtonsoft.Jsonは4.0.0.0(おそらくSocialAuth.Netに付属しています)を削除して、Nugetから得た4.5.0.0のリファレンスを追加しました。

  2. 私はWebApp/bin/debug/folderに入ってすべてを削除して、プロジェクトを再ビルドしました。

はしかし、かつて私は、Webアプリケーションを再構築し、Newton.Json 4.0.0.0は私が手動で新しいNuget 4.5.0.0にそれを参照するかにかかわらず、ビン/デバッグ/に戻ってきます。同じエラーが戻ってきます。ハマった。

あなたはこのDLLの問題に対処する方法がありますか?ありがとうございました。

編集-----------------------------------

少し考えた後、私はそれが最初のJson.Net(新しい4.5)が最初にリンクされているので、それが理解している、そして古いものは、ビルド時に後に来る。古いものは新しいものを上書きします。

私はGACのインストールには慣れていませんが、私が望んでいない2つのバージョンのワームをインストールすることができます。これは、Webを展開するすべてのマシンアプリ。 web.configで遊んでこれを回避する方法はありますか?

+0

oldVersion = "0.0.0.0-4.5.0.0"はoldVersion = "0.0.0.0-4.0.0.0" – user516883

答えて

0

‑IgnoreDependenciesフラグを持つSocialAuth.Netパッケージをインストールしてから、依存関係を手動でインストールして、最新バージョンのJson.Netライブラリのみをインストールするようにしてください。

実行時にSocialAuth.Netパッケージはアセンブリのリダイレクトを尊重し、古いバージョンではなくJson.Net(v4.5)をロードします。

+0

となります。 "-IgnoreDependencies"コマンドはパッケージに何もしないようです。とにかく新しいバージョンのJson.Net 4.5を4.0で上書きします。 – Tom

+1

最初に問題のパッケージをアンインストールしましたか?可能であれば、すべてのパッケージをアンインストールしてから、スイッチを使用して再度インストールしてください。私はそれを特に自分自身のスイッチを使用したことはありませんが、ドキュメントからはあなたが記述したことを行うべきではありません。 –

+0

私はもう一度始めました。そのSocialAuthを確認しました。Netは "-IgnoreDependencies"コマンドを無視し、独自の依存関係を新しくダウンロードしました。その後、古いものと私の新しい依存関係を上書きします。 Json.Netとlog4net ... ....また、NugetマネージャのUIに行き、SocialAuth.NetのDependenciesをその説明の下でチェックすると、「null」と表示されます。 SocialAuth.NetはNugetとの依存関係を関連づけなかったし、何らかの形でハードワイヤード接続しているかもしれない。 – Tom

関連する問題