resx文件在X64位编译,提示“未能加载文件或程序集”的问题?
resx文件在X64位編譯,提示“未能加載文件或程序集”的問題?
解答:
錯誤現象如下
此問題最多在VS2010或者(SP1)上出現過,屬于VS2010的缺陷,估計在VS更高的版本不會出現此問題。
通常提示:
<dataname="imageCollection1.ImageStream" type="xxxxxx"mimetype="application/x-microsoft.net.object.bytearray.base64">
??? <value>
???????AAEAAAD/AQAAAAAAAAAMAg...
</value>
? </data>
application/x-microsoft.net.object.bytearray.base64就是問題所在。
就算你設定解決方案AnyCPU,有時也解決不了問題。
?
錯誤原因:VS2010設計上特別是資源編譯器僅僅32位(很悲哀)。
解決方案:
方法一:干脆使用代碼設定資源,不使用資源編輯器。這個可能是一個愚蠢的主意,然而也是不錯的主意,但是能夠解決問題。不過特別注意,如果采用X64位的操作系統,默認都是按照64位編譯,如果使用32位的就是32位的,分發的時候如果是前者,需要使用.NET 2.0 SP2補丁,因為這個是.NET的BUG。否則使用.NET 2.0 SP1就行了。主要是針對WINDOWS XP的,如果是客戶的系統都是WINDOWS VISITA以上系統,不會存在此問題。
?
方法二:你使用添加引用裝配集合全部是X64位的庫,最后分發采用X86的動態庫,編譯通過。雖然不同,測試但是不影響結果。
??????????????? 主程序使用X86的庫,其他的庫都是用X64位的庫,保證通過,而主程序保證真正的引用。
方法三:應用庫的時候采用反射的方式加載X64位的庫。開發的時候不引用X64的庫,這個方法不好。
(我的項目適合,考慮你的架構。,但是你的不一定)。
?
方法四:升級VS2010,微軟說就是他的問題,據說在VS2012以上的版本視乎解決了,需要分發.NET 2.0 SP2補丁。這個是微軟的.NET 2.0的BUG;
?
方法五:你可以使用ResxFix補丁,修復此問題。下載地址如下:https://github.com/npaulo/ResxFix
我的項目一般采用方法二,和方法三。
?
總結
以上是生活随笔為你收集整理的resx文件在X64位编译,提示“未能加载文件或程序集”的问题?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux编译安装memcached
- 下一篇: 查看linux服务器硬件信息