代码之家  ›  专栏  ›  技术社区  ›  AngryHacker

为什么会出现序列化错误?

  •  9
  • AngryHacker  · 技术社区  · 14 年前

    我有以下代码:

    class Program
    {
        static void Main(string[] args)
        {
            string xml = @"<ArrayOfUserSetting>
                                <UserSetting>
                                    <Value>Proposals</Value>
                                    <Name>LastGroup</Name>
                                </UserSetting>
                                <UserSetting>
                                    <Value>Visible</Value>
                                    <Name>WidgetsVisibility</Name>
                                </UserSetting>
                            </ArrayOfUserSetting>";
    
            List<UserSetting> settings = 
                     GetObjFromXmlDocument<List<UserSetting>>(xml);
        }
    
        public static T GetObjFromXmlDocument<T>(string xml)
        {
            T customType;
    
            XmlSerializer serializer = new XmlSerializer(typeof(T));
    
            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(xml);
            using (XmlNodeReader xmlNodeReader = new XmlNodeReader(xmlDocument))
            {
                customType = (T)serializer.Deserialize(xmlNodeReader);
            }
    
            return customType;
        }
    }
    
    [Serializable]
    public class UserSetting
    {
        public string Value { get; set; }
        public string Name { get; set; }
    }
    

    代码运行良好,对GetObjFromXmlDocument的调用产生一个列表集合。然而,我总是得到第一次机会例外类型 System.IO.FileNotFoundException 在mscorlib.dll,何时 XmlSerializer serializer = new XmlSerializer(typeof(T)); 已执行。

    显示名称为“”的程序集mscorlib.xml序列化程序未能在ID为1的AppDomain的“LoadFrom”绑定上下文中加载。故障原因是:System.IO.FileNotFoundException异常:无法加载文件或程序集'mscorlib.xml序列化程序,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'或其依赖项之一。系统找不到指定的文件。

    有人能解释为什么会这样吗?有什么我可以做的吗 UserSetting

    2 回复  |  直到 14 年前
        1
  •  10
  •   approxiblue Ben Jackson    9 年前

    Microsoft says :

    序列化代码的编译 在飞行中。没有简单的方法 这个装配。负载()呼叫“,应该是 复制融合路径搜索和

    当找不到“预生成的序列化程序”时,似乎会在XmlSerializer中引发并处理FileNotFound异常,这将导致生成序列化代码。

        2
  •  2
  •   ScottWelker    10 年前

    绑定失败 System.IO.FileNotFoundException异常

    在Visual Studio中,异常对话框的Ctl-D、Ctl-E:

    1) 在下取消选中BindingFailure 托管调试助手

    公共语言运行时异常 .

    啊,那更好:-)