我有一个解决方案“第一个”,它由很少的项目组成。其中一个项目引用了其他项目的dll。我通过浏览将它们添加到特定位置。 当我通过一个简单的Windows应用程序启动另一个解决方案“Second”时,我添加了对“First”和两个“First”项目的引用,这两个项目相互延伸。我通过“First”的代码添加参考。XmlSerializer加载错误的程序集
现在,在“第一”,我有这行代码:
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来源于上下文'LoadFrom'中的'Something,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'位于'goodLocation'位置的 类型B来源于位置 '上的上下文'LoadNeither'中的'EL_CL,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null'C:\ Users \ John \ AppData \ Local \ Microsoft \ VisualStudio \ 8.0 \ ProjectAssemblies \ p3www12k01 \ EL_CL.dll'。“}
在VS的输出窗口中,我有:'devenv.exe'(托管):Loaded'C:\ Users \ John \ AppData \ Local \ Microsoft \ VisualStudio \ 8.0 \ ProjectAssemblies \ p3www12k01 \ Something.dll',不加载符号。
这个程序集为什么会被加载?在serializer.Serialize(sw,hello);,显示Output窗口中的那一行,然后程序崩溃。
请注意Something = hello.GetType()。
不会发生同样的异常。 – 2012-02-28 19:28:53