WPF - 下载.Net4 Framework源码,查找OpenExpressApp中DataGrid枚举值更新错误的原因

简介:

  OpenExpressApp之前使用了DataGrid来作为列表控件,在内置支持的属性编辑方式中介绍了枚举类型的使用,之前在.Net35下都是好的,一切正常,但是前一阵子OpenExpressApp升级到了.Net4了,对于枚举属性的列表控件编辑时会出现错误,更新一个枚举值后,控件显示有错误,如下所示:

查看堆栈,发现只能看到一个代码段,其余的都是.Net Framework内部的代码,看了代码方法,但是不太明白,我想最好的办法就是查看代码了,以前都是用Reflector查看代码,但是那只是静态的看代码,想起在VS2008下可以查看.Net Framework源码,我何不在VS2010下试试呢,于是开始去找Net4源码。

下载.Net 4源码

  在 http://referencesource.microsoft.com/netframework.aspx 中选择.Net4下载

准备调试

网上介绍了一些调试框架代码的设置,我试了一下,但是都会去服务器下载,试过多个方法后,最终按照如下方法进行可以顺利的进行调试

  1. 安装后只有两个目录【Source】和【Symbols】
  2. 配置Option,去除【Enable Just My Code】,记住也不要设置【Enable .Net Framework source stepping】(否则允许后总会去服务器下载pdb文件)
  3. 配置Debug/Symbols(根据自己安装路径设置)
  4. 拷贝pdb到【Symbols\Cache\MicrosoftPublicSymbols】目录。我之前试验时发现下载的pdf会放到【MicrosoftPublicSymbols】目录,所以我们需要把安装路径下的pdb文件都拷贝到这个目录

调试代码

  1. 运行代码,开始调试,记住只能通过Call Stack设置断点
  2. 一步一步Step into调试后,发现事故发生地

 

    public class EnumConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return new EnumViewModel((Enum)value).Label;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null; //这句话错误,没有返回正确的值
        }
    }

修改代码如下:

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return EnumViewModel.LabelToEnum(value.ToString(), targetType);
        }

回顾

  1. 多实验,找到可能性
  2. 通过.Net Source能够方便调试和定位bug

 










 本文转自 jingen_zhou 51CTO博客,原文链接:http://blog.51cto.com/zhoujg/517968,如需转载请自行联系原作者


相关文章
|
12天前
|
开发框架 安全 .NET
ASP.NET三甲医院手术麻醉信息管理系统源码 对接麻醉机、监护仪、血气分析仪
辅助医院建设 •支持三级医院评级需求 •支持智慧医院评级需求 •支持互联互通评级需求 •支持电子病历评级需求
16 0
|
2月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
35 4
|
3月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
68 0
|
3月前
|
开发框架 前端开发 JavaScript
分享129个ASP.NET源码总有一个是你想要的
分享129个ASP.NET源码总有一个是你想要的
29 0
|
3月前
|
开发框架 前端开发 .NET
分享119个ASP.NET源码总有一个是你想要的
分享119个ASP.NET源码总有一个是你想要的
40 1
|
3月前
|
开发框架 前端开发 .NET
分享68个ASP.NET源码总有一个是你想要的
分享68个ASP.NET源码总有一个是你想要的
65 0
|
3月前
|
开发框架 前端开发 JavaScript
分享53个ASP.NET源码总有一个是你想要的
分享53个ASP.NET源码总有一个是你想要的
32 0
|
3月前
|
开发框架 前端开发 .NET
分享42个ASP.NET源码总有一个是你想要的
分享42个ASP.NET源码总有一个是你想要的
27 0
|
3天前
|
存储 移动开发 前端开发
对象存储oss使用问题之OSS SDK .net 使用下载例程报错如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
19 0
|
4天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012