2012-06-08 8 views
5

Wir verwenden eine Drittanbieter-Assembly, die als AnyCPU kompiliert zu sein scheint.Ausführen von AnyCPU als 32-Bit auf 64-Bit-Systemen

Wir haben jedoch eine Reihe von Installationen unserer Anwendung, wo dies zu Problemen führt. Diese Drittanbieter-Assembly verwendet die Oracle-Datenzugriffs-Bibliothek und funktioniert nicht auf 64-Bit-Computern, auf denen nur ein 32-Bit-Oracle-Client installiert ist.

eine zusätzliche 64-Bit-Oracle-Client-Installation wäre möglich, aber auch teuer (kostet viel Zeit haben viele Maschinen aktualisiert werden etc.)

Gibt es eine Möglichkeit, eine AnyCPU .NET-Assembly zu zwingen als 32-Bit ohne Neukompilierung ausführen?

Antwort

5

Werfen Sie einen Blick auf CorFlags.exe.

Beispiel (set 32BIT flag):

corflags [path]\[YourAssembly.exe] /32Bit+ 
+0

+1. Ein Beispiel ist http://www.lextm.com/2009/03/sharpdevelop-on-x64-windows-issue.html –

+0

Alle Änderungen der Flags auf der 3rd Party Assembly führen zu einem Laufzeitfehler, wenn sie in eine 64 geladen werden Bit-Prozess (siehe doco https://msdn.microsoft.com/en-us/library/ms164699(v=vs.110).aspx). OP hat * schon * einen Laufzeitfehler, daher kann ich nicht sehen, dass das viel hilft: - /. Er muss die Flags auf der EXE ändern, die den Prozess startet, und während er corflags (dh im Feld) verwenden konnte, ist es auf lange Sicht wesentlich einfacher, nur zum Kompilieren auf x86 zu retarget – piers7

+0

@ piers7 * "Er muss die Flags auf der EXE ändern, die den Prozess startet" *: Ja, das ist, was meine Antwort sagt. * "Und während er corflags dafür verwenden konnte (dh in-the-field)" *: Ja, das ist, was OP gefragt hat. – sloth

5

Unter der Annahme, dass Sie die .EXE bauen, die einen Verweis auf eine AnyCPU Dritte Montage hat Sie müssen Ihr Projekt als x86 bauen. Dieses Projekt kann AnyCPU-Assemblies referenzieren, wird aber als x86 markiert und läuft als 32-Bit-Prozess sowohl auf 32-Bit- als auch auf 64-Bit-Windows.

+0

Dies ist eine bessere Antwort auf das eigentliche Problem des OP – piers7

Verwandte Themen