这段时间为跟踪一个Bug而焦头烂额,最后发现是.NET Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(传说MSDN订阅用户的问题能在两天内得到回复的,当时还很得意公司为我们购买的MSDN订阅账号),但得到的回复是“Could you file a bug report for this issue through Connect?”,绝望之后的又一次寒心啊。 看过payeasy的广告之后,便有了以下的这些内容,如何修改.NET Framework: 这里我们以修改Guid类为例,我们将修改这个类的内部构造,以便其始终构造值为0值(00000000-0000-0000-000000000000)的对象 1,知道你要修改.NET Framework中的谁(dll的名称) 这很简单, 翻翻MSDN,你应该能找到你所调用的类库是哪一个,或者使用reflector可以得到更详尽的信息。从MSDN得知,Guid类在mscorlib.dll中 2,找到你要修改的dll,并拷贝出来,以便修改 mscorlib.dll位于GAC中,很可惜,windows只允许按照“可远观不可亵玩"的方式静静欣赏(尽管心急如焚)
2.1 下载FileMon,其用于监视文件的被访问情况,我们可以通过他,找到文件路径 2.2 写一个小程序,让该程序去访问(引用)你需要查找路径的文件,这里也就是我们的mscorlib
代码中的Guid以及Console等都会访问mscorlib.dll 2.3 运行FileMon,让他去监视mscorlib的访问,由于我们不知道mscorlib的具体路径(废话),但我们至少知道它在C:\WINDOWS\assembly下(至少知道在系统盘下),那么我们就将这个文件夹及其所有文件一块监视吧:
3,利用ildasm反编译该dll,生成中间语言(IL)文件,我们将修改该IL文件 ildasm是.NET自带的一个反编译工具,可以再SDK中找到,但通过VS的控制台便可以使用了(具体使用方式,参考MSDN)
它其实是一个文本文件,所以可以直接打开进行编辑,但建议使用Notepad++或 UltraEdit 文本编辑器,但打开后似乎有些让人有些崩溃,汪洋大海啊,如何找到我们需要修改的代码所在的位置呢? |