wake-up-neo.com

Datei oder Assembly 'Microsoft.Practices.EnterpriseLibrary.Common' oder eine ihrer Abhängigkeiten konnte nicht geladen werden

Ich habe Google danach gesucht und konnte keine Lösung für das Problem finden.

Meine Website verweist auf DAL (benutzerdefinierte DLL), die auf Enterprise Library-Datenzugriffskomponenten verweist.

Ich habe die Enterprise Library aus dem NuGet Package Manager hinzugefügt, und wenn ich versuche, die Website zu erstellen, wird dieser Kompilierungsfehler angezeigt:

Fehler 44 Datei oder Assembly 'Microsoft.Practices.EnterpriseLibrary.Common' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein

Ich habe versucht, Copy Local = True in der DAL für Enterprise Library dlls einzustellen, und die DLLs werden zusammen mit DAL dll in das Bin-Verzeichnis der Website übertragen. Der Fehler wird jedoch weiterhin angezeigt.

Kann mich jemand auf diesem Weg führen ....

14
Naveed Butt

Das Problem ist, dass die von Ihnen verwendete DLL und die, auf die in Ihrem Projekt verwiesen wird, unterschiedlich sind. Ich bin nicht sicher, was der Unterschied im Manifest ist, aber es könnten Version und/oder öffentlicher Schlüssel sein.

Sie haben ein paar Dinge zu versuchen:

  1. Öffnen Sie die Eigenschaften für den Verweis DLL in Ihrem Projekt, und setzen Sie Version Specific auf false.

  2. Entfernen Sie den Verweis, löschen Sie die DLL aus dem Ordner bin und fügen Sie den Verweis erneut hinzu.

  3. Sie können auch eine andere/falsche Version in Ihrem GAC haben. Um sicherzustellen, dass Sie immer eine bestimmte, bekannte Version verwenden, erstellen Sie einen Assembly-Ordner relativ zu Ihrem Projektverzeichnis, kopieren Sie die DLL in dieses Verzeichnis und fügen Sie einen Verweis auf DLL im Assembly-Verzeichnis statt auf eine hinzu in GAC oder an anderer Stelle auf Ihrer Maschine. Dadurch wird sichergestellt, dass nur die spezifische Version verwendet wird, die Sie für die Anwendung vorgesehen haben, und nicht eine Version, die zu einem späteren Zeitpunkt auf Ihrem Computer aktualisiert wird.

9
competent_tech

NuGet CommonServiceLocator

Install-Package CommonServiceLocator
4
Bishoy Hanna

Diese DLL befindet sich wahrscheinlich im GAC auf Entwicklermaschinen im Rahmen einiger Windows-Anwendungsinstallationen (meine besten Vermutungen sind Visual Studio oder SSMS) .. _ Unser Bestes, um den GAC so sauber wie der Produktionsserver zu halten.

Um die Datei manuell herunterzuladen, gehen Sie zu https://servicelocation.codeplex.com/

Um die Build-Warnungen und -Fehler zu beheben, müssen Sie einfach einen NuGet-Befehl ausführen, um das Paket CommonServiceLocation zu installieren. Das Paket enthält nur diese eine DLL-Datei. Microsoft hat seit 2008 nur 1 Version (1.0.0.0) dieser Datei veröffentlicht. Die Datei ist mit allen .NET-Versionen und allen Unity-Versionen vollständig kompatibel.

2
Believe2014

Ich konnte dieses Problem beheben, indem ausALLEdie Logging-Referenzen in der Datei app.config entfernt wurden:

, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null

dh:

    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging, 
Version=6.0.0.0, Culture=neutral, PublicKeyToken=null" 
requirePermission="true" />

Wird:

     <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
Microsoft.Practices.EnterpriseLibrary.Logging" 
requirePermission="true" />

Das ist nicht ideal, aber es funktioniert ...

Das Enterprise Library Configuration Tool setzt die Werte zurück, sodass Sie darauf achten müssen. Ich weiß, dass es eine Möglichkeit gibt, die Konfigurationsdatei anzuweisen, diese falschen Einstellungen zu akzeptieren - aber ich bin nicht sicher, wie.

0
jlo-gmail

Durch das Festlegen der PublicKeyToken-Werte für alle EnterpriseLibrary-Referenzen in Web.Config wurde dies für mich behoben.

0
ebrecha