(原)解決.NET 32位程序運行在64位操作系統下的兼容性問題


背景:一個第三方組件是C++.NET  32位開發的,后被C#(基於FrameWork4.0)調用並封裝成組件,此二次封裝的組件無法運行於64位操作系統上。
        開發環境:VS2012;
解決辦法:
        1、於64位操作系統上分別安裝vcredist_VS2010_x64和vcredist_VS2010_x86;
        2、選擇宿主Exe 的目標框架為FrameWork 4.5,如果有條件組件也可以用Framework4.5,實際證明4.0也可,請看后續說明;
        3、把宿主Exe和組件程序分別設置目標平台為Any CPU模式,將宿主程序目標平台下面的 “首選32位”選中,注意如果是Framework4.0這個選項不可用;
        4、編譯宿主和組件,所有應用正常。
后續:
        1、把宿主程序重新改回Framework並進第編譯,此時也可以正常運行;
        2、根據過程分析4.0和4.5編譯器中在AnyCPU模式下,有個“首選32位”的參數,估計是VS2012的BUG,這個參數只有在4.5模式下才能可視化操作,而此參數保存下來了,后續再利用4.0編譯也起到了作用。


PS:這個選項只在VS2012中有,其它版本開發工具中沒發現。
      參考:http://msdn.microsoft.com/zh-cn/library/vstudio/zekwfyz4.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM