我有 3 个项目 - silverlight 应用程序 A 和 2 silverlight 类库 B、C。我的序列化逻辑在项目 C,方法 CallSer() 中。如果 B 的例程调用 CallSer(),则一切正常。但是,如果 C 中的例程调用 CallSer(),则会出现以下错误。我尝试设置 Copy Local 属性,但没有帮助(当 Copy Local = True 时,我看到程序集被复制到调试文件夹中)。这似乎令人惊讶,有人对如何解决这个问题有想法吗?谢谢。
{System.IO.FileNotFoundException:无法加载文件或程序集“System.Xml,版本=5.0.5.0,文化=中性,PublicKeyToken=7cec85d7bea7798e”或其依赖项之一。该系统找不到指定的文件。文件名:'System.Xml,版本=5.0.5.0,文化=中性,PublicKeyToken=7cec85d7bea7798e'}
更新:我做了更多分析,发现对 CallSer() 的调用实际上来自另一个 .NET 类库 D。所以调用堆栈显示为 D -> C -> CallSer()。我不确定只要我System.Xml.Serialization
引用 C 会有什么不同。另外,我没有看到System.Xml.Serialization
在 D 的添加引用选项中列出?为什么呢?
更新:看起来 XmlSerializer 对加载哪个引用感到困惑。那是因为 Silverlight 在 System.Xml.Serialization.dll 程序集中定义了 XmlSerializer,而 .NET 框架在 System.Xml.dll 中有它。我的项目 D 引用了 System.Xml,C 引用了 System.Xml 和 System.Xml.Serialization。如何确保 C 始终引用 Silverlight 版本的 dll?