Mit Oracle.DataAccess.DLL bereits auf dem PC, nicht die Bereitstellung es
Ich bin auf der Suche, um mein Programm mehr Dynamik. Ich möchte, dass es in der Lage sein, zur Unterstützung einer Oracle 10g-und Oracle 11g-Datenbank mit dem gleichen Programm. Wenn ich erstellen Sie das Programm mit Hilfe der .DLL-Verweis für eine version, dann die andere fehlschlägt. Gibt es einen Weg, um die Oracle.DataAccess.DLL das ist bereits auf dem computer installiert wird auf, statt der DLL in meinem installer?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
SpecificVersion ist ein Attribut, das gilt nur während der Bauzeit. Es wurde entworfen, um zu helfen, wenn es mehrere Versionen einer assembly in der build-Umgebung; wenn SpecificVersion ist wahr, es wird sicherstellen, dass Sie bauen vor und verweisen Sie auf die gewünschte version. Sobald die target-Baugruppe eingebaut ist, jedoch seine Referenzen enthalten, die den starken Namen und die Versionsnummer der referenzierten assembly. Also, wenn SpecificVersion ist falsch, es wird verweisen auf das, was war die verfügbare version der Referenz-in die build-Umgebung zu der Zeit.
"Beachten Sie, dass die Version-Eigenschaft ist nur ein build-time-Richtlinie, und es hat keine Auswirkung auf die Laufzeit-version die Auflösung der referenzierten assembly" (http://www.code-magazine.com/article.aspx?quickid=0507041&page=3).
Jedoch, Sie könnte verwenden version Umleitung explizit zu kommentieren, dass Sie akzeptieren jede version. Die oldVersion Feld gibt nichts (die version, die Sie gebaut), und das Attribut newVersion würde angeben, welche Sie wollen, um tatsächlich link vor zur Laufzeit.
(Siehe http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx.)
Dass dependentAssembly-Knoten angewendet werden können, um unterschiedlichen Kontexten. Ein möglicher Kontext wäre in einem web.config oder app.config als Kind von der Konfiguration/runtime/assemblyBinding Knoten.
Zur Beantwortung Ihrer speziellen Szenario, der Unterstützung von Oracle 10g und 11g? Es gibt zwei Optionen, von denen die erstere wurde vorgeschlagen, durch die user @BQ:
Ein paar weitere Tipps:
Wenn Sie wählen Sie die Referenz in Visual Studio und gehen Sie zum Eigenschaften-Fenster (F4 standardmäßig), sehen Sie eine option mit der Bezeichnung "Version". Wenn Sie dies auf false, wird das Projekt akzeptieren, unterschiedliche Versionen der DLL.
Nun dies bedeutet nicht unbedingt, dass das Projekt finden die version der DLL. Wenn es nicht in der Nähe der .exe (also in den Ordner oder Unterordner), oder in den GAC, dann haben Sie, um einige Arbeit zu tun auf Ihre eigenen, um es zu laden.
Siehe @MattRodatus' ausgezeichnete Antwort über eine Bindung umleiten, wenn Sie brauchen, um Ihre Anwendung zu unterstützen, die mehrere Versionen von
Oracle.DataAccess
sein könnten, auf einem Computer Sie bereitstellen.Jedoch, Sie sollten in der Lage sein, um Zugang zu einem 10g-oder 11g-Datenbank mit einer version von der Oracle-client-installation.
Sehen, die @der.jxc Antwort auf Oracle: Macht einen oracle 10g-client arbeiten mit einem 11g-server? für eine gute übersicht, welche clients unterstützen die Datenbanken.