【发布时间】: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