2016-05-12 8 views
1

Ich schreibe eine Asp.Net 5 (MVC6) Web API, und ich habe das nugget-Paket "SharpMap", das von Newtonsoft.Json v4.5.0.0 abhängt, aber die Assembly Mvc .Asp.Net.Mv.ViewFeatures erfordert Newtonsoft.Json v6.0.0.0.Wie man nuget Versionsbeschränkungen umgehen kann

Wenn ich Newtonsoft.Json zu v6 oder höher aktualisieren, bekomme ich diesen Fehler:

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'

Alle Ideen, wie umgehen die Version restriccion der nuget Pakete? Oder irgendeine andere Lösung für dieses spezielle Problem?

Antwort

1

Sie können das Flag -IgnoreDependencies während der Installation verwenden, um NuGet selbst zur Installation eines Pakets zu veranlassen, ohne sich um Abhängigkeitskonflikte kümmern zu müssen. In diesem Fall, es klingt wie Sie SharpMap deinstallieren wollen würde, installieren Sie alles andere (einschließlich Json.NET 6), und dann laufen:

Install-Package SharpMap -IgnoreDependencies 

Dann müssen wir .NET nicht beschweren sich über die widersprüchlichen Versionen machen zur Laufzeit. Dies kann durch Zugabe eines binding redirect zu Ihrer web.config/app.config Dateien erfolgen:

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

Dies teilt der Laufzeit-Anfragen zu umleiten zu laden Json.NET 4-6 Json.NET 6. HINWEIS zu laden, Die hier verwendeten Versionen sind .NET-Assembly-Versionen, die nicht mit den NuGet-Paketversionen übereinstimmen!

Jedoch ist es für ein Paket wie SharpMap seltsam, eine strenge Version zu haben, die auf einer üblichen Third-Party-Bibliothek wie NewtonSoft.Json gebunden ist. Erwägen Sie, die Betreuer zu bitten, eine Version mit einer unteren Grenze für diese Abhängigkeit bereitzustellen (z. B. 4.5.11 oder höher).

+0

Ich habe am Ende eine neue Lösung erstellt und den entsprechenden Code portiert. Ich habe auch die wichtigsten Quellen heruntergeladen und kompiliert, indem ich die newtonsoft-Referenzversion änderte. Aber deine Lösung funktioniert. Ich werde den SharpMap-Verlag kontaktieren, da die Version auf nugget vor 3 Jahren veröffentlicht wurde, aber die Quellen sind erst 3 Monate alt. –

Verwandte Themen