Wie nicht zum verweisen auf eine bestimmte version einer assembly?
Habe ich ein Visual Studio 2010 Projekt und ich habe eine assembly verwiesen wird Oracle.DataAccess.dll Punkte, die zu einer lokalen version.
Habe ich explizit gesetzt, wird die option "Version" falsch ist aber, wenn die Anwendung erstellt wurde, habe ich überprüft die Anwendung, Montage und es hat einen speziellen Verweis auf die
Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342
Wie nicht verweisen auf eine bestimmte version einer assembly?
Möchte ich zurückgreifen auf die version version ist verfügbar in den bin-Ordner.
Es derzeit offenbar hängt davon ab, wo die Anwendung gebaut ist. Wenn ich das Projekt erstellen auf einem Computer, auf dem eine andere version von der Oracle-Client installiert, dann eine andere Oracle.DataAccess Versionsverwaltung Referenz wird in der main-Anwendung.
Sollte es nicht verlassen, auf dem die Anwendung gebaut ist, wirklich. Es sollte nicht auf eine bestimmte version.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bestimmte Version eines compile-Zeit überprüfen Sie, dass die version, die Sie tatsächlich zu bauen, gegen die version, die Sie tatsächlich haben in der Projekt/Datei-Referenz.
Die jemals-version, die Sie kompiliert wurden, geht in die kompilierte assembly-Metadaten als eine referenzierte assembly. Diese enthält die version der assembly Zahl, denn es ist Teil der Baugruppe ist, die Identität der CLR. Es gibt keine Möglichkeit zu haben, einen Verweis auf eine andere assembly ohne eine version aufgenommen, in der output-Baugruppe.
Für dein Szenario würde ich wahrscheinlich Bestimmte Version auf true also wenn ich bauen es auf einer Maschine mit einer anderen version installiert, die Kompilierung schlägt fehl. Dann würde ich ein update der Projekt-Datei, wenn ich wollte, gegen den Sie kompilieren eine neue version.
Wenn Sie wollen, um gegen eine möglicherweise neuere version der referenzierten assembly, das ist richtig gesteuert via die Politik. Entweder eine herausgeberrichtliniendatei, die Oracle zu bieten hätte, oder wenn Sie feststellen, dass Ihre Anwendung ist vollständig kompatibel mit neueren Versionen per app-config assembly binding redirection. Diese Dokumentation stellt ein Beispiel für die Umleitung via config-Datei.
Gut, da Sie sich auf dass .dll in das Projekt, das Sie nicht vermeiden können, die Angabe einer version. Wenn Sie telefonieren will .dll-Datei, ohne sich auf seine version, die Sie haben zu tun, die es in Ihrem code. Sehen diese
Wenn Sie SpecificVersion auf false, dann können Sie einfach ersetzen Sie die referenzierte assembly ist, wird es funktionieren ohne Probleme. Die version, die Sie erwähnt zeigt nur die version das Projekt erstellt wurde mit.
Können Sie leicht überprüfen, dieses Verhalten. Erstellen Sie eine Klasse Bibliothek-Projekt mit einer Klasse, dass es enthält eine öffentliche Methode, die zurückgibt, einige string-Nachricht. Bauen und platzieren Sie die resultierende assembly in einige Ordner aus, in dem Sie darauf verweisen. Dann erstellen Sie eine Konsole-Projekt einen Verweis auf die assembly, mit SpecificVersion=false und CopyLocal=true und outputh die Nachricht an die Konsole. Bauen und ausführen. Nach, ändern Sie den zurückgegebenen string in der ersten Projekt -, change-version, build und ersetzen Sie die Montage in der Nähe Ihrer Konsole Projekt ausführbar. Erneut ausführen, sehen Sie, dass die Nachricht geändert wird.
For Oracle.DataAccess-die situation ist etwas besonderes. Siehe screenshot für meine Oracle installiert haben.DataAccess
Können Sie die Installation von Version 1.x -, 2.0-oder 4.0 finden Sie unter " verfügbare downloads hier:
Oracle Data Access Components (ODAC) for Windows
Es hängt auch davon ab, die Oracle-Client-version, die Sie installiert haben. ODP.NET Version 1.x ist nur verfügbar, bis Oracle 11.1.
Version 1.x und 2.0 sind nicht 100% kompatibel zueinander (aber es ist possbile, um Ihnen gelang in den gleichen code). In VS spezifizieren Sie die version, z.B. 2.0. In diesem Fall müssen Sie eine version 2.x.x.x auf Ihrem Rechner installiert ist, in meinem Fall wird es zu laden 2.102.2.20, siehe Politik in früheren Antwort.
Wenn Sie version 1.x dann version 1.x.x.x muss auf Ihrem Rechner installiert sein.
Für die version 4.0 habe ich noch nicht testen.
In der Anwendung, die ich entwickeln, biete ich zwei verschiedene Setup.exe. Der Kunde muss wählen Sie das richtige setup, basierend auf seiner Oracle-Client-installation.
Furter Informationen finden Sie hier: ODP.NET FAQ
Meine Oracle installiert haben.DataAccess