首页 新闻 会员 周边

NetMassLoader使用和用reflector查看assert方法的若干问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2012-01-17 14:35

1.NetMassDownloader 1.5版本的已经支持.net 3.5 sp1了,大家用时下载的dll路径都是“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”一类(我的电脑里也有这样的路径),我把我的这类路径作为-d参数输进去,结果却是几乎所有的dll都显示“not available”或者“no .debug section”,就算是用-f 单独下载微软开放的DLL文件也不行。谁能给我.net3.5开放的dll清单,难道不是这上面列的吗?http://referencesource.microsoft.com/troubleshooting.aspx

而且我在VS调用模块窗口中右击dll选择从MS符号服务器加载符号可以成功加载大部分的符号文件,而用NetMassDownloader的-f 命令下载却回应not available,不知道为什么

  

2.我想调试Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll程序集里的assert类的这个函数:

public static void AreEqual(object expected, object actual),

看微软开放源码的程序集列表,应该是没有这个程序集,可是我为什么还能从服务器上下载到pdb符号?下了符号按F11进不去源码,不给源码只给符号?

 

3.因为源码进不去,我用reflector查看Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll里面的assert这个函数,一步一步跟到底儿,判断相等的是这么几个语句(红色的是我一步步点进去的):

 1 public static void AreEqual(object expected, object actual)
2 {
3 AreEqual(expected, actual, string.Empty, null);
4 }
5
6
7 public static void AreEqual(object expected, object actual, string message, params object[] parameters)
8 {
9 AreEqual<object>(expected, actual, message, parameters);
10 }
11
12
13
14
15 public static void AreEqual<T>(T expected, T actual, string message, params object[] parameters)
16 {
17 if (!object.Equals(expected, actual))
18 {
19 string str;
20 if (((actual != null) && (expected != null)) && !actual.GetType().Equals(expected.GetType()))
21 {
22 str = (string) FrameworkMessages.AreEqualDifferentTypesFailMsg((message == null) ? string.Empty : ReplaceNulls(message), ReplaceNulls(expected), expected.GetType().FullName, ReplaceNulls(actual), actual.GetType().FullName);
23 }
24 else
25 {
26 str = (string) FrameworkMessages.AreEqualFailMsg((message == null) ? string.Empty : ReplaceNulls(message), ReplaceNulls(expected), ReplaceNulls(actual));
27 }
28 HandleFail("Assert.AreEqual", str, parameters);
29 }
30 }
31
32
33
34
35 public static bool Equals(object objA, object objB)
36 {
37 return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
38 }
39
40
41 public virtual bool Equals(object obj)
42 {
43 return InternalEquals(this, obj);
44 }
45
46
47
48
49 [MethodImpl(MethodImplOptions.InternalCall)]
50 internal static extern bool InternalEquals(object objA, object objB);
51

 

跟到最后49行这个跟不进去了,这个标有extern的方法应该是在类的外部定义的,很可能使用别的语言,我怎么能找到这个extern方法的定义在哪儿?

 

4.如下图,我已经将reflector集成到vs 2008中,也已经将Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll程序集反编译,但是为什么调试时在assert断点处按F11进不去reflector反编译出来的代码?

Jessie.M的主页 Jessie.M | 初学一级 | 园豆:181
提问于:2012-01-13 13:00
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册