感谢您使用微软产品。这是一个已经知道的问题。我们可以在一些情况下重现它。这个问题是由于.NET生成的IL语言在源文件中没有对应的语句,所以Debuger就在源代码中高亮度显示了该语句的上一条。具体情况请您参阅下面的实例源代码和相应的IL文件://////////////// Source Code /////////////////////////////////using System;namespace ConsoleApplication2
{ class Class1
{
static void Main(string[] args)
{
int i; try
{
i = 1;
if(i == 0)
{
i++;
return;
} }
catch
{
return ;
} return;
}
}
}//////////////////////////////// 在ILDasm中生成的IL文件 ///////////////////////////////.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint // Code size 19 (0x13)
.maxstack 2
.locals init ([0] int32 i) .try
{
IL_0000: ldc.i4.1
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: brtrue.s IL_000b
IL_0005: ldloc.0
IL_0006: ldc.i4.1
IL_0007: add
IL_0008: stloc.0
IL_0009: leave.s IL_0012
IL_000b: leave.s IL_0010
} // end .try catch [mscorlib]System.Object
{
IL_000d: pop
IL_000e: leave.s IL_0012
} // end handler IL_0010: br.s IL_0012
IL_0012: ret} // end of method Class1::Main////////////////////////////////////////////////////////////////////////////
在上面的IL中,当 执行" IL_000b: leave.s IL_0010"时,并没有源代码和他相对应。Debugger就把该指令上面最近的,并且具有对应源代码的指令高亮度显示出来。在上面的例子中,就是"IL_0009: leave.s IL_0012", 他对应于源代码中的try中的return.您可以把return替换为别的语句,在step into中,仍然会被高亮度显示, 尽管它不会被执行。相信这个问题会被尽快修复。在当前情况下,如果您在debug的过程中碰到这种情况,请您参阅IL代码。它对我们的debug很有帮助。希望上面的信息对您有所帮助。-微软全球技术中心 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
{ class Class1
{
static void Main(string[] args)
{
int i; try
{
i = 1;
if(i == 0)
{
i++;
return;
} }
catch
{
return ;
} return;
}
}
}//////////////////////////////// 在ILDasm中生成的IL文件 ///////////////////////////////.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint // Code size 19 (0x13)
.maxstack 2
.locals init ([0] int32 i) .try
{
IL_0000: ldc.i4.1
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: brtrue.s IL_000b
IL_0005: ldloc.0
IL_0006: ldc.i4.1
IL_0007: add
IL_0008: stloc.0
IL_0009: leave.s IL_0012
IL_000b: leave.s IL_0010
} // end .try catch [mscorlib]System.Object
{
IL_000d: pop
IL_000e: leave.s IL_0012
} // end handler IL_0010: br.s IL_0012
IL_0012: ret} // end of method Class1::Main////////////////////////////////////////////////////////////////////////////
在上面的IL中,当 执行" IL_000b: leave.s IL_0010"时,并没有源代码和他相对应。Debugger就把该指令上面最近的,并且具有对应源代码的指令高亮度显示出来。在上面的例子中,就是"IL_0009: leave.s IL_0012", 他对应于源代码中的try中的return.您可以把return替换为别的语句,在step into中,仍然会被高亮度显示, 尽管它不会被执行。相信这个问题会被尽快修复。在当前情况下,如果您在debug的过程中碰到这种情况,请您参阅IL代码。它对我们的debug很有帮助。希望上面的信息对您有所帮助。-微软全球技术中心 本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货