Es gibt zwei Szenarien - starke Namen/GAC oder keine starken Namen.
Wenn Sie starke Namen verwenden und die Komponenten im GAC installieren, wird .NET die Version der Komponente verwenden, auf die der Client bei der Kompilierung verwiesen hat. In Ihrem Beispiel wäre es also durchaus möglich, dass Project die Datenbank V2 referenziert, während die referenzierte Datenbank V1 protokolliert, da die DLLs parallel im GAC gespeichert werden können. Wenn Sie also wollen, dass Logging V2 anstelle von V1 verwendet, müssen Sie die Konfigurationsdateien so ändern, dass "ein Verweis auf V1 auf V2 verweist". Es gibt verschiedene Orte, um dies zu tun - App-Datei, Maschinendatei usw.
Wenn Sie keine starken Namen verwenden, dann.Net verwendet standardmäßig die Version der DLL, die sich im selben Ordner wie der Client befindet. Angenommen, Sie stellen Project, CommonControls und Logging im selben Ordner wie die Datenbank V2 bereit. Selbst wenn Logging für die Datenbank V1 erstellt wurde, wird versucht, die Komponente im selben Ordner zu verwenden, dh in der Datenbank V2. Solange V2 die gleichen öffentlichen Klassen und Methoden bereitstellen kann, die Logging verwenden möchte, wird es funktionieren.
In meiner Umgebung - wo alle unsere Anwendungen intern sind - verwenden wir nicht den GAC. Wir stellen einfach alle Dateien bereit, die die Anwendung in einem einzigen Ordner benötigt. Wenn Sie viele gemeinsame Komponenten haben, wäre es nur ein Alptraum, die Konfigurationsdateien synchron zu halten.
Das ist alles ganz anders als bei COM, wo alle Anwendungen die aktuell registrierte Kopie der DLL aufnahmen (vorausgesetzt V1 und V2 waren binärkompatibel).
Vielen Dank für den AssemblyBinding Link aber kann diese spezifische Version Eigenschaft in vs2008 für ein Website-Projekt nicht finden? – alexmac
Ah die spezifische Versionseigenschaft ist in Klassenprojekten und Webanwendungsprojekten, aber nicht in Websiteprojekten – alexmac
Für einen programmatischen Ansatz kann False SpecificVersion> zu jeder Referenz im Projekt hinzugefügt werden, wo die Versionsmetadaten entkoppelt werden sollen . –