resx文件在X64位编译,提示“未能加载文件或程序集”的问题?

简介: 原文:resx文件在X64位编译,提示“未能加载文件或程序集”的问题? resx文件在X64位编译,提示“未能加载文件或程序集”的问题? 解答: 错误现象如下 此问题最多在VS2010或者(SP1)上出现过,属于VS2010的缺陷,估计在VS更高的版本不会出现此问题。
原文: 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

我的项目一般采用方法二,和方法三。

 

目录
相关文章
|
Windows
关于:未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项异常的解决方案
关于:未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项异常的解决方案
870 0
|
12月前
|
C# C++
System.BadImageFormatException: 未能加载文件或程序集
System.BadImageFormatException: 未能加载文件或程序集
|
C#
C# .Resx文件无效解决方案 Resx文件报错解决方法
C# .Resx文件无效解决方案 Resx文件报错解决方法
764 7
C# .Resx文件无效解决方案 Resx文件报错解决方法
|
C#
解决办法:为什么我的DLL中加载后找不到指定的函数
解决办法:为什么我的DLL中加载后找不到指定的函数
159 0
C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。
原文:C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。 当某个程序集文件被载入AppDomain,该文件在AppDomain.Unload之前是不能被替换和删除的。
2376 0
visual studio编写C#代码时“未能从程序集.....中加载类型”和“找不到方法”的一种可能的解决办法
编译前报错:$exception    {"未能从程序集“XSW.MySQLDAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型“XSW.MySQLDAL.EnterpriseLibraryProductDAL”。
1736 0