首页 文章

无法使用silverlight类库加载system.xml

提问于
浏览
2

我有3个项目 - silverlight app A和2个silverlight类库B,C . 我的序列化逻辑在项目C,Method CallSer()中 . 如果B的例程调用CallSer(),一切正常 . 但是如果来自C的例程调用CallSer(),它会给出以下错误 . 我已经尝试设置Copy Local属性但它没有帮助(我看到当Copy Local = True时程序集被复制到调试文件夹) . 这似乎令人惊讶,任何人都有关于如何解决这个问题的想法?谢谢 .

{System.IO.FileNotFoundException:无法加载文件或程序集'System.Xml,Version = 5.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'或其依赖项之一 . 该系统找不到指定的文件 . 文件名:'System.Xml,Version = 5.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'}

更新:我做了一些分析,发现对CallSer()的调用实际上来自另一个.NET类库D.所以调用堆栈显示是D - > C - > CallSer() . 我不知道只要我有 System.Xml.Serialization 对C的引用,这会有什么不同 . 另外,我没有在D的Add Reference选项中看到 System.Xml.Serialization ?为什么会这样?

更新:看起来XmlSerializer对于加载哪个引用感到困惑 . 这是因为Silverlight在System.Xml.Serialization.dll程序集中定义了XmlSerializer,而.NET框架在System.Xml.dll中有它 . 我的项目D引用了System.Xml,C有System.Xml和System.Xml.Serialization . 如何确保C始终引用Silverlight版本的dll?

2 回答

  • 2

    我遇到了同样的问题,尝试运行单元测试,问题是,如果调用Silverlight类库的代码是针对“桌面”.Net Framework构建的,那么你将无法加载冲突dll的Silverlight版本,只有Silverlight运行时可以加载针对Silverlight CLR / BCL构建的dll .

    看看创建Portable Class LibraryPortable Library Tool

  • 0

    我和 Xml.Writer 有同样的问题 .

    我通过在Visual Studio中使用'Add as Link'在Silverlight项目和非silverlight项目之间共享源代码文件来解决这个问题 . 我还必须使用 #ifdef SILVERLIGHT 来拥有一个单独的命名空间 .

    劳埃德的便携式类库方法看起来更干净但我没有时间尝试它 .

相关问题