resx文件在X64位编译,提示“未能加载文件或程序集”的问题?
resx文件在X64位編譯,提示“未能加載文件或程序集”的問題?
解答:
錯誤現(xiàn)象如下
此問題最多在VS2010或者(SP1)上出現(xiàn)過,屬于VS2010的缺陷,估計(jì)在VS更高的版本不會出現(xiàn)此問題。
通常提示:
<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就是問題所在。
就算你設(shè)定解決方案AnyCPU,有時(shí)也解決不了問題。
?
錯誤原因:VS2010設(shè)計(jì)上特別是資源編譯器僅僅32位(很悲哀)。
解決方案:
方法一:干脆使用代碼設(shè)定資源,不使用資源編輯器。這個(gè)可能是一個(gè)愚蠢的主意,然而也是不錯的主意,但是能夠解決問題。不過特別注意,如果采用X64位的操作系統(tǒng),默認(rèn)都是按照64位編譯,如果使用32位的就是32位的,分發(fā)的時(shí)候如果是前者,需要使用.NET 2.0 SP2補(bǔ)丁,因?yàn)檫@個(gè)是.NET的BUG。否則使用.NET 2.0 SP1就行了。主要是針對WINDOWS XP的,如果是客戶的系統(tǒng)都是WINDOWS VISITA以上系統(tǒng),不會存在此問題。
?
方法二:你使用添加引用裝配集合全部是X64位的庫,最后分發(fā)采用X86的動態(tài)庫,編譯通過。雖然不同,測試但是不影響結(jié)果。
??????????????? 主程序使用X86的庫,其他的庫都是用X64位的庫,保證通過,而主程序保證真正的引用。
方法三:應(yīng)用庫的時(shí)候采用反射的方式加載X64位的庫。開發(fā)的時(shí)候不引用X64的庫,這個(gè)方法不好。
(我的項(xiàng)目適合,考慮你的架構(gòu)。,但是你的不一定)。
?
方法四:升級VS2010,微軟說就是他的問題,據(jù)說在VS2012以上的版本視乎解決了,需要分發(fā).NET 2.0 SP2補(bǔ)丁。這個(gè)是微軟的.NET 2.0的BUG;
?
方法五:你可以使用ResxFix補(bǔ)丁,修復(fù)此問題。下載地址如下:https://github.com/npaulo/ResxFix
我的項(xiàng)目一般采用方法二,和方法三。
?
總結(jié)
以上是生活随笔為你收集整理的resx文件在X64位编译,提示“未能加载文件或程序集”的问题?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux编译安装memcached
- 下一篇: nginx 优化篇