可移植类库中的FileNotFoundException

本文关键字:FileNotFoundException 类库 可移植 | 更新日期: 2023-09-27 18:18:14

我有3个程序集,一个WP7应用程序(目标7.0),一个Web服务项目(运行4.0)和一个可移植类库(从模板&针对WP7, SL4 &. net 4.0),其中包含前两者之间使用的公共类型。

当在本地运行时(在IIS Express中),事情工作得很好,但是当在Web服务程序集的已部署实例(在我几乎无法控制的远程IIS服务器上)上运行时,会出现以下异常:

先。FileNotFoundException:无法加载文件或程序集"System.Xml。序列化,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089'或其依赖项之一。的系统找不到指定的文件。文件名称:"System.Xml。序列化,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089' -> System.IO.FileNotFoundException:无法加载文件或程序集"System.Xml.Serialization",版本=2.0.5.0,文化=中性,PublicKeyToken=31bf3856ad364e35,Retargetable=Yes'或它的一个依赖项。系统找不到指定的文件。文件名称:'System.Xml.Serialization,版本=2.0.5.0,文化=中性,PublicKeyToken=31bf3856ad364e35,Retargetable = Yes '

堆栈跟踪表明它是在第一次调用到PCL时,如果是上面的类型加载失败,这是有意义的。

如果我删除对PCL程序集的引用,然后将关键类文件添加到两个程序集,事情会很好地工作,但是我想避免这种代码重复…问题是:为什么会发生这种情况?如何将PCL配置为按所写的功能?

编辑:更多的信息…我的PCL使用XmlSerializer,它存在于桌面的System.Xml.dll和Silverlight的System.Xml.Serialization.xml中……一个在完整桌面框架下不存在的程序集……所以这个失败是有道理的,只有在PCL世界中,这些程序集/类中的一些是独立的

在这种情况下,XmlSerializer实际上位于C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework.NETPortable'v4.0'Profile'Profile2' system . xml . serializer .dll(由PCL引用)…作为测试,我在Web项目中添加了相同的引用…然而,在web项目运行时,它失败了,黄屏显示:

无法加载文件或程序集"System.Xml"。序列化'或其中之一它的依赖性。定位的程序集的清单定义不会匹配程序集引用。(Exception from HRESULT: 0x80131040)

可移植类库中的FileNotFoundException

您需要在远程服务器上安装KB2468871。这是一个已经推送到大多数客户端机器的GDR -然而,服务器需要选择加入它(它们通常不会自动安装更新)。

相关文章:
  • 没有找到相关文章