2016-05-12 8 views
1

私はAsp.Net 5(MVC6)Web APIを作成しています.Nutetsoft.Json v4.5.0.0に依存する "SharpMap"というナゲットパッケージを追加しましたが、アセンブラMVC .Asp.Net.Mv.ViewFeaturesにはNewtonsoft.Json v6.0.0.0が必要です。Nugetのバージョン制限をバイパスする方法

私は後でV6以上にNewtonsoft.Jsonを更新した場合、私はこのエラーを取得:

Assembly 'Microsoft.AspNet.Mvc.ViewFeatures' with identity 'Microsoft.AspNet.Mvc.ViewFeatures, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' uses 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' which has a higher version than referenced assembly 'Newtonsoft.Json' with identity 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'

nugetパッケージのバージョンrestriccionを回避する方法上の任意のアイデア?またはこの特定の問題のための他の解決策?

答えて

1

インストール時に-IgnoreDependenciesフラグを使用すると、依存関係の競合を心配することなくパッケージをインストールするためにNuGet自体を取得できます。この場合、それはあなたが実行し、SharpMapをアンインストール(Json.NET 6を含む)他のすべてをインストールし、したいと思うように聞こえる:次に

Install-Package SharpMap -IgnoreDependencies 

を、私たちは、.NETは、競合するバージョン文句ない確認する必要があります実行時にこれはあなたのweb.configファイル/はapp.configファイルにbinding redirectを追加することによって行うことができます。

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="NewtonSoft.Json" /> 
      <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" 
          newVersion="6.0.0.0"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

これはというJson.NET 6 NOTEをロードするためにJson.NET 4-6をロードするための要求をリダイレクトするためにランタイムに指示しますここで使用されているバージョンはNuGetパッケージのバージョンと同じではない.NETアセンブリバージョンです!

しかしSharpMapのようなパッケージでは、NewtonSoft.Jsonのような一般的なサードパーティのライブラリに厳密なバージョンバインドを設定するのは奇妙です。保守担当者に、その依存関係の下限(例えば、4.5.11以上)を提供するように要請することを検討する。

+0

新しいコードを作成し、関連するコードを移植しました。最新のソースをダウンロードして、newtonsoftのリファレンスバージョンを変更してコンパイルしました。しかし、あなたのソリューションは機能します。シャープマップの出版社に連絡します。なぜなら、リリースされたバージョンのナゲットは3年前ですが、ソースはわずか3ヶ月です。 –

関連する問題