比较程序集名称时发生了处理器结构不匹配: Ref x86,Def MSIL

程序上的事 2009-08-18 00:10:49 阅读102 评论0   字号: 订阅

闲话不说,上代码:(C#)

FontLoadInfo ret = new FontLoadInfo();
XmlSerializer serializer = new XmlSerializer( typeof( FontLoadInfo ) );
FileStream stream = File.Open( filePath, FileMode.Open );
ret = (FontLoadInfo)serializer.Deserialize( stream );

 

起初运行到第二行会报错:

 

显示名为"XXX.XmlSerializers”的程序集未能加载到 ID 为 1 的 AppDomain 的“LoadFrom”绑定上下文中。错误的原因为: System.IO.FileNotFoundException: 未能加载文件或程序集

(这里的XXX代替的是FontLoadInfo所在的程序集的名字。)

 

习惯性的用Filemon查了一下,发现程序实际上是在搜索XXX.XmlSerializers这个程序集。一直找不到,故报错。

那么这个程序集要从哪里得到呢?MSDN上有介绍,要使用sgen工具:

进入.NET FRAMEWORK 的SDK命令行提示,到XXX所在的目录输入sgen xxx.dll,回车

xxx.XmlSerializers.dll被成功创建。。

 

事情还没有这么简单就结束:

异常依旧,只不过异常的详细信息中显示:比较程序集名称时发生了处理器结构不匹配: Ref x86,Def MSIL

这句话究竟是啥意思就只意会不言传了:)

一阵子搜索之后,还是在MSDN上搜到了解决方法:

http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/9447a0d9-e719-41aa-a654-363bb66b82c9

说白了,这种情况要这样输:

sgen XXX.dll /c:"/platform:x86"

让主程序和sgen生成的程序集平台属性一致。

 

在此记一笔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值