C# VS调试器赢得';t进入XML反序列化器构造函数
背景 我有一个序列化为XML文件的类,因此用户可以更改一些启动设置。该类有一个枚举,我希望反序列化程序接受name或int值作为有效值C# VS调试器赢得';t进入XML反序列化器构造函数,c#,visual-studio-2010,debugging,xml-deserialization,step-into,C#,Visual Studio 2010,Debugging,Xml Deserialization,Step Into,背景 我有一个序列化为XML文件的类,因此用户可以更改一些启动设置。该类有一个枚举,我希望反序列化程序接受name或int值作为有效值 protected MyClass(SerializationInfo info, StreamingContext context) { // want to Step Into right here try { logLevel = (Logger.Level)info.GetValue("LogLevel", typeof(Logger.
protected MyClass(SerializationInfo info, StreamingContext context) {
// want to Step Into right here
try {
logLevel = (Logger.Level)info.GetValue("LogLevel", typeof(Logger.Level));
}
catch(Exception) {
logLevel = (Logger.Level)info.GetValue("LogLevel", typeof(Int32));
}
…
它不起作用,XML deserialize()仍引发异常,表示“0”或“1”等不是该类型的有效值。因此,我自然会尝试通过步骤(F11)调试行MyClass mc=(MyClass)xmlSerializer.Deserialize(filepath)代码>
进入不进入预期代码
但是Visual Studio跳到的下一行是类的默认构造函数MyClass()的开头,而不是MyClass(SerializationInfo,StreamingContext)
因此,我通过该构造函数(它分配与XML文件无关的默认值,据我所知根本不应该被调用)执行F11,当它跳出构造函数时,我会像以前一样出现异常,显然我从来没有运行过我编写的反序列化代码
我甚至试着在我要调试的代码的开头放上一个System.Diagnostics.Debugger.Launch()
或.Break()
,Visual Studio 2010只是忽略了它
是否存在Visual Studio无法或不会跟踪反序列化构造函数的某些方面,或者有什么问题?能否再发布一些代码?您遇到了什么异常?是否确保已将调试器设置为调试本机代码和托管代码?根据我的经验,每当调试器跳过我想要进入的源代码时,都是因为没有设置其中一个选项。