exception keep Datei oder Assembly System.Net.Http.Primitives konnte nicht geladen werden. Die Manifestdefinition der angegebenen Assembly entspricht nicht der Assemblyreferenz



googleapis sdk (12)

Ich arbeite an einem Programm, das die Google API verwendet. Jedes Mal, wenn ich mein Programm starte, erhalte ich immer den folgenden Fehler:

Die Datei 'System.Net.Http.Primitives, Version = 1.5.0.0, Culture = neutral, PublicKeyToken = b03f5f711d50a3a' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein.

Ich verwende Visual Studio 2012 Express. Ich habe versucht, diesem link folgen und durch viele Foren geschaut, aber keiner scheint zu funktionieren. Das Hauptproblem scheint von der DLL-Datei "Google.Apis.dll" zu stammen, die ich referenzierte, und es verweist auf System.Net.Http.Primitives v1.5.0.0. Die Version, die mein Programm verweist, ist jedoch 2.2.13.0. Ich habe versucht, die Programmreferenz v1.5.0.0 stattdessen zu haben (ich schaffe es, die DLL zusammen mit dem Quellcode von Google.Apis zu finden), aber das verursachte nur ein anderes Problem, in dem ich eine neuere Version von System.Net brauchte. Http.Primitive.

Ich habe versucht, einen Weg zu finden, um dies zu umgehen, aber ich kann nichts finden, was funktioniert. Danke für die Zeit.


Wir hatten das ähnliche Problem. Aber in meinem Fall hat die Lösung, die app.config von Paul zu modifizieren, nicht funktioniert. Der Grund ist, dass ich es als Plugin in einer anderen Anwendung verwende. Daher berücksichtigt es die Konfigurationsdatei der Anwendung. Also haben wir den Google API Code von GitHub bekommen und die Google.Apis.Core Bibliothek erstellt, nachdem wir die Abhängigkeit von System.Net.Http.Primitives entfernt haben. Dann haben wir diese DLL verwendet, die unser Problem gelöst hat.


Konnte das ziemlich leicht lösen. Habe gerade den Nuget-Paket-Manager geöffnet und das Microsoft ASP.NET Web API 2.2-Clientbibliothekspaket aktualisiert. Dieses aktualisierte Microsoft.Net.Http zu der neusten Version, die das Problem mit dem System.Net.Http.Primitives Assembly behoben wurde, das gefunden werden kann. Hoffe das hilft!


Irgendwie funktionierte die populäre Antwort von Paul Lemke nicht für mich. Bei dem Projekt handelt es sich um eine Webformularanwendung, die mit .net v 2.0 gestartet und auf .net Version 4.5 aktualisiert wurde

Ich habe die Pakete aktualisiert und nugget hat die korrekten dependentAssembly / bindingRedirects erstellt.

Laut einigen Kommentaren ist es wahrscheinlich nicht die beste Idee, die lokale Datei machine.config zu ändern.

Ich hatte ein Attribut in meiner Datei web.config, das dazu führte, dass die App die bindingRedirects ignorierte.

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

Ich habe das Attribut xmlns entfernt und es hat angefangen zu arbeiten.


Ich hatte ein ähnliches Problem.

Versuche nugget zu aktualisieren (tools / extensions und updates ...) Habe das und einige andere Probleme für mich gelöst.

/ Jonas


Ich stieß auf dieses Problem, als ich meinen Code veröffentlichte, der Google.Apis.Drive.v2 (v1.9.2.1860) für die Firma verwendet, für die ich arbeite. Ich gab ihnen die exe und alle DLLs, die Visual Studio (und NuGet) generierten, und sie erhielten den Fehler. Ich habe nie den Fehler bekommen.

Das Update war einfach (sobald ich es herausgefunden habe): Bei der Installation der API von Nuget wird die Datei 'assemblyname.exe.config' automatisch im Output-Ordner (alias Debug oder Release) erzeugt. Sie müssen diese Datei nur einschließen, wenn Sie die Assembly an einer anderen Stelle als dem generierten Ordner ausführen. Hier ist der Code für diese Datei für mich:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.29.0" newVersion="4.2.29.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Dies ist im Grunde Pauls "zweite" Lösung, aber sie wird automatisch vom Paketmanager generiert. Das Problem für mich war, als ich seinen "ersten" Fix durch die Aktualisierung auf Google.Apis.Auth und Google.Apis.Core (v1.9.3) versuchte, machte es die Sache noch schlimmer. Ich würde den gleichen Fehler bekommen, außer dass es jetzt für "Google.Apis.Core" die falsche Version war (obwohl das wahrscheinlich auch gelöst worden sein könnte, indem man dieselbe .exe.config Datei einfügt).

Hoffe, das hilft jemandem, ich weiß, dass dieser Thread ziemlich alt ist, aber es ist derjenige, zu dem mich eine schnelle Google-Suche geführt hat.

Bearbeiten: Vergessen zu erwähnen, dies ist relevant für eine Konsolenanwendung, die auf .NET 4.5 abzielt. Einige davon sind wahrscheinlich noch für andere .NET-Ziele oder ASP.NET relevant, aber ich weiß es nicht genau. Ihre Laufleistung kann variieren.


In meinem Fall fügt Nuget automatisch das folgende zu web.config hinzu

<runtime xmlns="">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.6.9.0" newVersion="2.6.9.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.2.22.0" newVersion="2.2.22.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.1.10.0" newVersion="2.1.10.0" />
  </dependentAssembly>
</assemblyBinding>

Aber ich habe immer noch die obige Fehlermeldung, endlich finde ich es heraus. Sie müssen diese Tags in die Datei machine.config unter C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config kopieren.

Um das Tag von "runtime" in machine.config zu finden, ersetzen oder ergänzen (wenn es kein solches Tag gibt) es mit Ihren Tags aus Ihrer web.config (die ich oben aufgelistet habe).


NuGet hat die folgende Änderung in Web.Config vorgenommen

<dependentAssembly> <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.22.0" newVersion="4.2.22.0" /> </dependentAssembly>

zu

<dependentAssembly> <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.28.0" newVersion="4.2.28.0" /> </dependentAssembly>

Dies wurde nach der Installation und dem anschließenden Entfernen (durch Versionskontrolle) dieses Pakets https://www.nuget.org/packages/Microsoft.AspNet.WebApi.MessageHandlers.Compression/


Die obige Antwort zum Verbinden ist korrekt, aber Sie sollten die machine.config NICHT berühren.

Die Assemblybindung muss in der Konfigurationsdatei aller EXECUTABLE-Assemblys Ihres Projekts (.exe.config) festgelegt werden, die auf Ihre Bibliothek und nicht auf die Bibliotheksassemblys (.dll.config) verweisen.


Für mich hat es folgendes geklappt:

In Visual Studio (2012)> Tools> Nuget-Paket-Manager> Paket-Manager-Konsole. Oben auf der Paket-Manager-Konsole habe ich Package Source: nuget.org Standard-Projekt: das Projekt, das die System.Net.Http.Primitives benötigt Sehen Sie in der Projektdatei (yourproject.csproj) mit einem Editor Ich lese, welche Version benötigt wird (in Mein Fall war Microsoft.Net.Http.2.2.28)

Also ging ich zu https://www.nuget.org/packages/Microsoft.Net.Http/ und ich klickte auf meine Version unter "Versionsgeschichte" (scrollen Sie ein wenig die Seite, wenn Sie es nicht sehen). Nach dem Auswählen der Version kopieren Sie den vorgeschlagenen Befehl - in meinem Fall war es:

Install-Paket Microsoft.Net.Http -Version 2.2.28

aber wenn du die neuste Version brauchst, ist das genau das:

Install-Paket Microsoft.Net.Http

und Sie fügen es in Ihrer Visual Studio Package Manager-Konsole ein, die zuvor wie zuvor beschrieben geöffnet wurde. Führe den Befehl aus.

Im Projekt unter den Referenzen ist System.Net.Http.Primitives jetzt aktualisiert.


Fügen Sie Folgendes zu Ihrer web.config (app.config) hinzu:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-4.2.13.0" newVersion="4.2.13.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Ich habe dasselbe Problem mit den Google-APIs festgestellt. Das Hauptproblem hier ist, wenn Sie die Microsoft Http Client Libraries installieren, fügt es in Ihrem Projekt eine aktualisierte Version der System.Net.Http.Primitives DLL. Die web.config geht davon aus, dass Sie immer noch die Standardversion von 1.5 verwenden. Es gibt zwei Dinge, die passieren müssen, um es zu beheben:

Erstens: Aktualisieren Sie auf die neuesten Versionen von Google API und Microsoft Http Client Libraries . Sie können die Updates über NuGet installieren. Klicken Sie mit der rechten Maustaste auf Ihre Website, klicken Sie auf "NuGet-Pakete verwalten" und wählen Sie auf der linken Seite Updates aus. Zum Zeitpunkt dieses Beitrags sind einige Google APIs nur als Vorabversion verfügbar. Sie können sie über NuGet installieren, indem Sie oben auf dem Update-Bildschirm "Prerelease einbeziehen" auswählen.

Zweiter Update / füge ein dependentAssembly in deine web.config ein. Dazu müssen Sie die Version der System.Net.HTTP.Primitives.dll wissen, die installiert wurde. Suchen Sie in Ihrem bin-Verzeichnis in Windows Explorer. Suchen Sie System.Net.HTTP.Primitives.dll, klicken Sie mit der rechten Maustaste darauf, wählen Sie Eigenschaften und klicken Sie auf die Registerkarte "Details". Notieren Sie sich die dort befindliche Version. Zur Zeit dieses Posts war meine 4.0.10.0 .

Fügen Sie dann einen dependentAssembly-Abschnitt für die korrekte Version hinzu oder aktualisieren Sie ihn.

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="0.0.0.0-4.0.10.0" newVersion="4.0.10.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Für mich funktionierte es, einfach die "Microsoft Http Client Libraries" von Nuget zu installieren.





google-api-dotnet-client