2012-06-08 6 views
5

Używamy zestawu Third-Party, który wydaje się być skompilowany jako AnyCPU.Uruchom AnyCPU jako 32-bitowy w systemach 64-bitowych

Mamy jednak kilka instalacji naszej aplikacji, gdzie prowadzi to do problemów. Ten zestaw stron trzecich korzysta z biblioteki Oracle Dataaccess i nie będzie działać na komputerach 64-bitowych, w których zainstalowany jest tylko 32-bitowy klient Oracle.

Instalowanie dodatkowej 64-bitowego klienta Oracle byłoby to możliwe, ale również drogie (zajmuje dużo czasu, wiele maszyn muszą być aktualizowane etc.)

Czy istnieje sposób zmusić zespół AnyCPU .Net uruchomić jako 32-bitowy bez rekompilacji?

Odpowiedz

5

Spójrz na CorFlags.exe.

Przykład (zestaw 32BIT flag):

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

+1. Przykładem jest http://www.lextm.com/2009/03/sharpdevelop-on-x64-windows-issue.html –

+0

Wszystkie zmiany flag na zestawie strony trzeciej spowoduje wystąpienie błędu runtime, jeśli załadowany do 64 proces bitowy (patrz doco https://msdn.microsoft.com/en-us/library/ms164699(v=vs.110).aspx). OP już * ma * błąd runtime, więc nie widzę, że to bardzo pomaga: - /. Musi zmienić flagi na EXE, który uruchamia proces, i chociaż mógłby użyć korflagów do tego (tj. W polu), długoterminowo jest znacznie prostsze po prostu do retarget do x86 podczas kompilacji – piers7

+0

@ piers7 * "Musi zmienić flagi na EXE, który rozpoczyna proces" *: Tak, tak brzmi moja odpowiedź. * "i podczas gdy mógłby użyć do tego korflagów (np. w polu)" *: Tak, właśnie o to prosił OP. – sloth

5

Zakładając, że budujemy .EXE, który ma odniesienie do AnyCPU montażu cywilnej trzeba budować swój projekt jako x86. Ten projekt może odwoływać się do złożeń AnyCPU, ale będąc oznaczony jako x86, będzie działał jako proces 32-bitowy zarówno w 32-bitowym, jak i 64-bitowym systemie Windows.

+0

To jest lepsza odpowiedź na rzeczywisty problem PO – piers7

Powiązane problemy