【问题标题】:XmlSerializer loading wrong assemblyXmlSerializer 加载错误的程序集
【发布时间】:2012-02-28 16:33:28
【问题描述】:

我有一个由几个项目组成的“第一”解决方案。其中一个项目引用了其他项目的 dll。我通过浏览到特定位置来添加它们。 当我使用一个简单的 Windows 应用程序启动另一个解决方案“Second”时,我添加了对“First”和“First”的两个项目的引用,它们相互扩展。我通过“First”中的代码添加引用。

现在,在“First”中,我有这行代码:

OneProject hello = OneProjectList[OneProjectList.Count - 1];
StringWriter sw = new StringWriter();
XmlSerializer serializer=new XmlSerializer(hello.GetType(),new Type[]{typeof(OneProject)});
serializer.Serialize(sw, hello);

项目在最后一行崩溃。异常说 {"[A]Something.X 不能转换为 [B]Something.X。 类型 A 源自位置“goodLocation”的上下文“LoadFrom”中的“Something, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”。 类型 B 源自 'EL_CL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 在上下文 'LoadNeither' 的位置 'C:\Users\John\AppData\Local\Microsoft\VisualStudio\8.0\ProjectAssemblies\p3www12k01\EL_CL.dll'。"}

在 VS 的输出窗口中,我有: 'devenv.exe' (Managed): Loaded 'C:\Users\John\AppData\Local\Microsoft\VisualStudio\8.0\ProjectAssemblies\p3www12k01\Something.dll',未加载任何符号。

为什么要加载这个程序集?输出窗口中的那一行在 serializer.Serialize(sw, hello); 时显示,然后程序立即崩溃。

请注意,Something = hello.GetType()。

【问题讨论】:

    标签: c# serialization visual-studio-2005 assemblies


    【解决方案1】:

    如果你从你的 XmlSerializer 构造函数中取出额外的 Type 数组是否有效?

    XmlSerializer serializer = new XmlSerializer(hello.GetType); 
    

    【讨论】:

    • 没有。发生同样的异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2011-12-05
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多