2011-01-31 33 views
1

我們有一個項目,我們使用PostSharp來啓用日誌記錄。很棒。然而,有幾個方法在非常嚴格的循環中運行,其中日誌的開銷確實增加了相當大的數量。我試圖找出從日誌代碼中排除它們的最佳方法。PostSharp - 排除使用AttributeExclude的方法不起作用

從我讀過的東西,這種方法應該工作

AssemblyInfo.cs 

// turn on logging for all methods in all classes 
[assembly: Log(LogType.Debug)] 

Code.cs 

// exclude this specific method 
[Log(AttributeExclude=true)] 
private void SomeMethod(...) 

但是,我這樣做,並用分析器運行它的時候,我仍然看到日誌代碼上的someMethod執行()。我已經根據SO和PostSharp論壇上的帖子嘗試了許多不同的迭代,並且我總是得到相同的結果。

感覺這應該很簡單,我只是錯過了一些明顯的東西。

+0

您建議的解決方案應該可以工作。您是否使用Reflector查看SomeMethod以查看代碼內部的內容? – 2011-02-01 07:26:47

回答

0

我發現我的SomeMethod()例程中有一個LINQ查詢,編譯器正在變成一個單獨的方法。這個編譯器生成的方法也被PostSharp和Log屬性所裝飾。在剖析器中查看它並不清楚發生了什麼,但在使用Resharper來挖掘生成的代碼後,我發現了它。

+0

你使用過ReSharper還是Reflector? – 2013-08-09 23:44:34