Ich hatte einige Probleme mit der Version der DLL, die im Manifest und der aktuellen Version im Build-Ordner vorhanden war. Das Ändern der Build-Option auf "Details" ergab folgende Informationen:
Es gab einen Konflikt zwischen "Microsoft.Practices.EnterpriseLibrary.Common, Version = 5.0.505.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 "und "Microsoft.Practices.EnterpriseLibrary.Common, Version = 6.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 ".
"Microsoft.Practices.EnterpriseLibrary.Common, Version = 5.0.505.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 "wurde gewählt, weil es war primär und "Microsoft.Practices.EnterpriseLibrary.Common, Version = 6.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 "war nicht.
Im zweiten Abschnitt heißt es, dass eine bestimmte Version als primäre ausgewählt wurde.
Was bedeutet primary?
Grüße.
Sie bitten MSBuild, ein DLL Hell-Problem zu lösen. Es muss Microsoft.Practices.EnterpriseLibrary.Common.dll in Ihr Build-Ausgabeverzeichnis kopieren, damit Sie Ihr Programm ausführen können. Aber Sie verweisen auf zwei verschiedene Versionen davon. Das kann nicht funktionieren, einer wird den anderen überschreiben und es ist ein Mist, der gewinnt.
Es muss also raten, welcher davon "wichtiger" ist. Eine Ihrer Assemblys hat eine "primäre" Abhängigkeit, sie verweist direkt auf Typen innerhalb von Microsoft.Practices.EnterpriseLibrary.Common.dll. Eine andere Ihrer Assemblys hat eine indirekte Abhängigkeit. Sie verwendet eine Assembly, die mit Assembly 6.0.0.0 erstellt wurde. Erzwungen zu erraten, nimmt MSBuild an, dass der primäre wichtiger ist.
Es ist nur eine Vermutung. Es funktioniert möglicherweise , Sie benötigen ein <BindingRedirect>
in der Datei app.exe.config, um die Anforderung für die Version 6.0.0.0 der Assembly der Version 5.0.505.0 seit der Version 6.0.0.0 zuzuordnen wird nicht verfügbar sein. Wenn eine größere Version nicht übereinstimmt, sind das nie gute Neuigkeiten. Eine TypeLoadException oder eine MissingMethodException zur Laufzeit sollten Sie nicht überraschen. Wenn dies nicht funktioniert, kann die Installation dieser Assemblys im GAC eine Umgehungslösung sein, sodass Sie die DLLs nicht auf diese Weise kopieren müssen. Natürlich ist die wirkliche Lösung, nur eine bestimmte Abhängigkeit zu haben.
Tags und Links .net