7

ich zur Zeit die folgende Ausnahme erhalten beim Versuch, die Enterprise Library Validation Application Block zu verwenden:Ausnahme „Konnte Datei oder Assembly‚Microsoft.Practices.EnterpriseLibrary.Validation laden“

ein Fehler den Konfigurationsabschnitt aufgetreten Erstellen Handler für die Validierung: Datei oder Assembly konnte nicht geladen werden 'Microsoft.Practices.EnterpriseLibrary.Validation, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' oder eine seiner Abhängigkeiten. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) (C: \ Dokumente und Einstellungen \ Eigene Dateien \ Visual Studio 2008 \ Projekte \ Tester \ TestProject \ web.config Zeile 12)

Ich weiß, was die Ausnahme versucht, mir zu sagen, aber ich kann nicht herausfinden, wie ich es beheben kann. Ich habe nur eine Version der Enterprise Library installiert, und das ist es (4.1.0.0), also sehe ich nicht, wie es die falsche Version finden könnte, also stelle ich mir vor, dass es dann ein Abhängigkeitsproblem ist. Ich habe die DLLs "Common", "Validation" und "ObjectBuilder2" aus der Enterprise Library 4.1 als Referenzen in das Projekt aufgenommen, also bin ich mir nicht sicher, was ich sonst noch vermisse. Die Dokumentation scheint zu zeigen, dass dies alles ist, was ich brauche.

Gibt es eine Möglichkeit herauszufinden, was das Abhängigkeitsproblem ist?

Wenn es hilft, versuche ich das Enterprise Library Configuration Tool zu verwenden, um einen Validation Application Block-Regelsatz für die Validierung von Daten in einer Entity Framework-Entität zu erstellen. Ich bin mit ASP.NET MVC in Visual Studio 2008.

Vielen Dank für jede Hilfe/Richtung, die Sie zur Verfügung stellen kann,

Chris

Antwort

5

Schalten Fusion Protokollierung und sehen, welche Baugruppe zur Laufzeit gebunden wird.

Hanselman hatte vor kurzem einen Beitrag, der beim Aktivieren der Protokollierung und der Überprüfung der Ausgabe hilfreich sein sollte.

http://www.hanselman.com/blog/CommentView.aspx?guid=3654c8f3-c5c3-4dee-a01f-c9a8da3ef2fa

Ein weiterer wichtiger Unterschied zu machen ist, dass Referenzen, die das Projekt hinzugefügt werden, sind Referenzen Compile-Zeit und haben keinen Einfluss auf die Art und Weise, dass Code zur Laufzeit gebunden ist, andere als einen starken Namen angeben, wenn ein Es wurde eine stark benannte Assembly verwendet. Um herauszufinden, was zur Laufzeit passiert, müssen Sie sich die Bindungsprotokolle ansehen. Das Protokoll sollte alle Versuche anzeigen, die die Laufzeitumgebung beim Auffinden der Assembly vornimmt. Wenn sich die Assembly nicht zusammen mit Ihrem executable im bin-Verzeichnis befindet, sucht sie höchstwahrscheinlich im GAC und sucht nach einer Version, die sie nicht erwartet.

Beachten Sie, dass der Compiler beim Aufrufen von Assemblies den GAC NICHT verwendet. Wahrscheinlich haben Sie eine andere Version, die im Projekt als Referenz verwendet wird, als Sie im GAC installiert haben.

Es ist auch sehr einfach herauszufinden, welche Version Sie im GAC installiert haben, indem Sie in C: \ Windows \ Assembly mit Windows Explorer suchen. Die Version, die in Ihrer Fehlermeldung angegeben wird, wird die Version sein, auf die während Kompilierung verwiesen wurde. Wenn diese Versionen nicht übereinstimmen, könnte dies Ihr Problem sein, wenn Sie davon ausgehen, dass Fusion tatsächlich in der GAC sucht (was sich im Fusion-Protokoll zeigt).

+0

Danke für die Zeiger. Ich erkannte schließlich, dass aufgrund der Art, wie ich Referenzen machte, die Standardversion der DLL statt der neueren Version einging. Ich dachte dummerweise, ich müsste die DLL selbst erstellen, anstatt die vorgefertigte Binärdatei im Paket zu verwenden, so dass der Token offensichtlich nicht mit dem übereinstimmt, den ich eingestellt habe. Ich sortierte die Installation mit Enterprise Library, so dass es die von Microsoft erstellten DLLs verwendete und alles war glücklich. Ich werde jedoch versuchen, Fusion zu verwenden, es klingt, als hätte es mir geholfen, dieses Problem schneller zu verfolgen. Vielen Dank! – Chris

Verwandte Themen