Weblog @ rebex.cz

Weblogy na webu Rebexu
Welcome to Weblog @ rebex.cz Sign in | Help
in Search

Weblog @ Rebex.cz :: Honza Šotola

nepravidelné poznámky .NET vývojáře

Jak přinutit .NET aplikaci běžet v 32bit režimu

Občas se stane, že aplikace v .NETu referencuje jinou .DLL, která pracuje jen v 32bit režimu.
Příkladem je např. MS Jet Engine pro práci s Access databází či SqlServerCe.dll pro přístup do SQL Server Compact databází.

Vše funguje dobře, dokud aplikaci nespustíte na počítači s 64bitovým OS. Pak začne aplikace padat, typicky na "BadFormatException".
Visual Studio totiž defaultně kompliluje aplikace tak, že platformu (32bit nebo 64bit) si volí při spuštění adaptivně podle toho, co je na daném počítači dostupné.

Řešení jsou různá podle dané situace:

  1. Pokud máte přístup ke zdrojákům aplikace,
    pak stačí ve vlastnostech projektu na kartě Build přepnout přepínač Plaform target z Any CPU na x86.
    POZN: tento přepínač není dostupný u Compact Framework projektů, protože tam se nějakých 64bitů ani neočekává.
  2. Pokud není výsledná assembly podepsaná,
    pak můžete cílovou platformu změnit pomocí utility Corflags.exe
    Např. corflags.exe application.exe /32BIT+
    Je ověřeno, že toto nastavení funguje i na aplikace, zkompilované pro Compact Framework (výsledné .exe pak běží i na stolních i na kapesních Windows)

Pro situaci, kdy nemáte přístup ke zdrojákům a assembly je podepsaná, řešení neznám.

Published 29. října 2009 11:28 by honzas
Filed under: ,

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

Leave a Comment

(required) 
(optional)
(required) 
Submit
Powered by Community Server (Personal Edition), by Telligent Systems