Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle.DataAccess-Nichtübereinstimmungsfehler

Wie du schon sagtest, es ist nur eine Warnung. Da ODP.net nicht "AnyCPU" ist, weist die Warnung darauf hin, dass Sie eine Abhängigkeit haben, die sich nicht wie Ihre eigene Anwendung an das Hostbetriebssystem anpassen wird. Solange Ihre odp.net-Installation in Bezug auf die Bits mit dem Betriebssystem übereinstimmt, ist alles in Ordnung. Aber der Compiler ist nicht in der Lage, diese Feststellung zu treffen und versucht, Ihnen einen Hinweis zu geben.

Ich habe einen Verbindungsartikel gefunden Dazu gehört eine mögliche Änderung (ich nehme an, die proj-Datei), um den Fehler zu deaktivieren:

<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

In jedem Fall wird Ihre "AnyCPU"-Anwendung auf Ihrem Server problemlos ausgeführt, solange das 32-Bit-odp.net, das Sie auf dem Server installieren, dieselbe Version wie das 64-Bit-odp.net ist, auf das Sie verwiesen haben (oder die Herausgeberrichtlinien ordnungsgemäß installiert sind). Umleitung auf eine neuere Version). Um Verwirrung zu vermeiden, setze ich generell "Copy Local" für den Verweis auf "false". Mit anderen Worten, ich kompiliere gegen eine bestimmte Version der DLL, lasse sie aber gegen das laufen, was sie aus dem GAC auflöst (was Herausgeberrichtlinien enthält, die die meisten odp.net-Installationen enthalten).

Sie können auch das 32-Bit-odp.net auf Ihrem Entwicklungscomputer installieren (idealerweise wieder dieselbe Version), um 32-Bit-Anwendungen auszuführen/zu debuggen oder die integrierten Tools zu verwenden, die „mit Oracle Developer Tools for Visual Studio“ in Visual enthalten sind Atelier.

Alles in allem gibt es hier mehr als man denkt. Wenn Ihre Anwendung tatsächlich als 64-Bit ausgeführt wird (was mit "es ist nur eine Warnung" impliziert wird), verwendet sie NICHT Ihre 32-Bit-Installation. Ich würde vermuten, dass auf Ihrem Computer bereits die 64-Bit-Version installiert ist (mehrere Oracle-Homes).