DebuggerStepThrough屬性允許您跳過某些方法/類/屬性。DebuggerStepThrough可以繼承自動生成的IEnumerable實現嗎?
在DebuggerStepThrough being ignored明確指出,c#編譯器不會將此屬性繼承到編譯器生成的IEnumerable<T>
實現中。
此類故障的簡單的例子是:
static void Main(string[] args)
{
var a = SkipMe().ToList();
}
[System.Diagnostics.DebuggerStepThrough]
static IEnumerable<int> SkipMe()
{
// comment out line below and the throw will be stepped over.
yield return 1;
throw new Exception();
}
有沒有辦法讓C#編譯器將DebuggerStepThrough
屬性添加到自動生成的類型?
有沒有辦法讓視覺工作室跳過調試到[CompilerGenerated]
屬性的任何類型?
-
附錄:一些說明性的截圖
按F5
的Visual Studio版本後結果:
我們缺少的屬性:
對於那些想知道爲什麼在使用Dapper時我們將其作爲一個源代碼塊進行包含的原因,我想避免在常規使用過程中進入任何Dapper代碼,並且不希望爲該項目添加一個dll到項目中。 – 2012-01-06 00:18:53
我無法理解這個問題。編譯器已經將[DebuggerHidden]屬性應用於迭代器類的方法。片段中的示例沒有意義,調試器總是停在未捕獲的異常上。 SkipMe()方法中的註釋沒有意義,它不會執行throw語句。至少在VS2008中,不能說出你在說什麼版本。 – 2012-01-06 09:32:06
@hans vs 2010 .net 4,迭代器只有編譯器生成,我在反射器中檢查過 – 2012-01-06 10:15:26