ObjectDataSource选择业务对象列表为空的探讨
前天晚上,在一个页面上拖了一个ObjectDataSource,配置数据源时发现选择业务对象的列表没有列出当前项目的实体类,甚至连NewLife.CommonEntity中的实体类也没有列出来。按以往管理,重新编译、删除引用、更新DLL……所有操作都试了一遍,还是不行。这就奇了怪了,虽然这几年来一直碰到这个问题,尽管不知道原因,但是从来没试过解决不了的。觉得也许是我安装了vs2010sp1的原因。
第二天早上到了办公室,让没有安装vs2010sp1的同事试一下,同样的问题……
于是打算反编译.Net类库看看可能是怎么回事。搞了大半天,还是没有一丁点头绪,因为.Net类库里面在设计时方面大量使用接口,以及GetService之类的模式,压根就找不到实现类在哪!苦恼之余,老王告诉我,更换到旧版本的XCode v6.5就没有问题了。我心里一咯噔,v6.5?那是半年前的版本了,难道说这半年来一直用不了?但是也没听说呀!至少,这说明了问题跟我们的组件有关。
于是一个个组件一个个版本的试,终于确定只要把CommonEntity库更换到12月21日的版本就没有问题。于是查看了版本日志,以及代码变更。源代码控制就是好,可以记录编码过程中的点点滴滴!似乎也没什么用,那天修改的几个问题,都是改一下函数内部处理代码而已,vs在加载实体类型时,不会执行到里面的代码。于是又断线了!
OD附加到vs2010,不行,太大了,OD非常容易崩溃!并且还不好下断点。
vs2010调试vs2010,打开.Net源码调试,很悲剧,vs2010的源码是不公开的,同时因为没有合适的启动项目,压根就没地方下断点!
很不情愿的安装了非常不熟悉的WinDbg。太久不用,都生疏了,光是设置就花了几个小时。以前的WinDbg手册和SOS手册也都找不着了……到园子里找了十几二十篇文章临时看了一下,边看边折腾,基本的操作终于学会了。
1,设置符号路径。最好下载操作系统符号库安装。
2,把.Net2.0和.Net4.0的sos.dll拷贝到WinDbg目录下,分Clr20和Clr40目录存放,方便加载。
3,附加进程后,.chain看看已加载的xxx,如果没有sos,用.load加载。开始的时候总是提示sos版本不对,后来.chain看来,发现2和4的都加载了,还是默认自动加载的,悲剧,没有人告诉我怎么卸载,我猜.unload,懒得打参数,还真是。。。卸载最后一个。
4,我走了很多弯路,后来者就不要学我了。不懂指令,可以help,不行?那就用问号!太可怜了,WinDbg就那么几个命令。至于SOS所有指令都是!开头,!help就可以看到,不懂的一个个试,要是不懂英文,就学英文去。
5,!Name2ee指令直接找到要跟踪的方法,!DumpIL看看IL是否和Reflector中一致,鬼知道它会不会有什么优化处理呀,还有,用!u看看这个方法的汇编,是否与IL大致相同。一般来说,会有85%相同,毕竟jit会优化的嘛,特别是内联。
6,bp下断点,OD中一直很讨厌的指令下断点,这里不得不用,谁让WinDbg只有这么一个呢!
7,g吧,vs2010从挂起中恢复了,正常操作,配置数据源,不动了……果然WinDbg中断下了,你就不能学学OD,断下的时候自动把窗口弹出到前面来吗?
。。。。。。
998,sxe clr让clr异常断下,
原来是加载DLL出现异常!
999,查找资料,Assembly的Load、LoadFile、LoadFrom三个究竟什么区别?本地测试,LoadFile实体类库果然报错,LoadFrom倒是没问题,顺手拿MySql的程序集测试,居然通过了的,对比之下,它就多了一个CLS兼容……
1000,修改X各个组件,改成CLS兼容,编译,测试,没问题!
到现在为止,还是不知道为什么……
- 动态控件的新思路
- 独家分享 腾讯大神教你如何学习一门新的编程语言-以Python 为例
- 连续打印问题的解决
- 分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口
- 更新Mapx地图的字段
- 设置linux账号的有效时间
- relative定位的理解
- shell+curl监控网站页面(域名访问状态),并利用sedemail发送邮件
- 写稿机器人获“吴文俊奖”,能提升今日头条内容质量吗
- 使用jQuery自动缩图片 - [jQuery]
- apt-get update更新源时,出现“Hash Sum mismatch”问题
- linux下DHCP服务原理总结
- DIV的宽度自动适应功能
- 在虚拟主机上发布.Net应用的一些总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解Android沉浸式实现兼容解决办法
- AndroidStudio项目打包成jar的简单方法
- 浅谈React Native打包apk的坑
- Android 设置主题实现点击波纹效果的示例
- 更新Android Studio 3.0碰到的问题小结
- android实现一个图片验证码倒计时功能
- Android添加glide库报错Error:Failed to resolve:com.android.support:26.0.2的解决
- Android多线程下载示例详解
- 详解Android Gradle插件3.0挖坑日记
- Android开发之拼音转换工具类PinyinUtils示例
- Android多线程断点续传下载示例详解
- Android设备与外接U盘实现数据读取操作的示例
- [Alibaba-ARouter]浅谈简单好用的Android页面路由框架
- android屏幕圆角实现方法的示例代码
- Android开发中日期工具类DateUtil完整实例