Warum versucht mein System, einen Typ aus einer ungültigen Version der Assembly zu laden?

8

Ich arbeite an einem alten System, das NHibernate 3 und Feder für DI verwendet, ich muss etwas Refactor für diese Lösung machen. Einige der Projekte der Lösung verwendeten NHibernate 1.2, ich habe sie in NHibernate 3 geändert. Jetzt ist die einzige Version von NHibernate, die in der gesamten Lösung verwendet wird, 3.

Jetzt ist das Problem, wenn ich versuche, einen der Web-Services in der Lösung zu laden, System versuchen, einen Typ von NHibernate 1.2 zu laden, habe ich veröffentlichte Projekt in einem anderen System getestet und es funktioniert gut, und es sollte sein ein Problem mit meinem System, es gibt mir nur: Der Typ 'NHibernate.Event.ListenerType' konnte nicht aus der Assembly 'NHibernate, Version = 1.2.1.4000, Culture = neutral, PublicKeyToken = aa95f207798dfdb4' .

Kann mir jemand helfen, herauszufinden, warum CLR versucht, einen Typ von einer nicht referenzierten Baugruppe zu laden?

    
BigBoss 10.09.2016, 04:52
quelle

4 Antworten

6

Danke an jeden, der mir geholfen hat, aber ich habe die Antwort gefunden.

Ich habe .NET Reflector auf meinem System und es war einmal, dass ich NHibernate auf meinem System widerspiegelte und es war Version 1.2.1.4000 , es erstellte eine Kopie meiner DLL in seinem Cache und es wurde in der Ladereihenfolge bevorzugt. Ich habe den Cache gelöscht und jetzt funktioniert alles wie erwartet

    
BigBoss 18.09.2016, 08:30
quelle
3

Das gleiche Problem passiert bei mir oft, aber mit verschiedenen DLLs

Ich werde mitteilen, welche Schritte ich befolgt habe, um von diesem Problem loszukommen

  1. Debuggen und freigeben Ordner
  2. Löschen Sie den obj-Ordner
  3. Entladen Sie das Projekt und laden Sie es erneut (klicken Sie mit der rechten Maustaste auf das Projekt, klicken Sie auf "Entladen" und klicken Sie dann mit der rechten Maustaste und klicken Sie auf "Projekt laden")
  4. Klicken Sie mit der rechten Maustaste auf die Lösung und klicken Sie auf Clean Solution
  5. Klicken Sie mit der rechten Maustaste auf die Lösung und klicken Sie auf Rebuild Solution

Ich hoffe, das wird mit dir funktionieren

    
Monah 17.09.2016 21:00
quelle
0

Sie können versuchen, diese Assembly aus dem globalen Assemblycache zu entfernen:

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein: gacutil -u NHibernate

Gacutil.exe ist ein Teil einer Windows SDK-Suite. Auf meinem Computer befindet es sich in C: \ Programme (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ x64

    
Lesmian 13.09.2016 11:22
quelle
0

Überprüfen Sie, ob in Ihrer App.config / Web.config-Datei ein <bindingRedirect> -Tag vorhanden ist. Ich sah ein ähnliches Problem in einem ASP.NET MVC-Projekt mit Newtonsoft.Json.dll, die ich durch Aktualisieren der oldVersion und newVersion Attribute des <bindingRedirect> -Tags behoben. Ссылка

    
Prasanna 13.09.2016 12:49
quelle