在Visual Studio 2010中,如果轉到項目的屬性並轉到生成選項卡,則會出現「定義TRACE常量」複選框。這相當於做了一個#define TRACE。在.NET/Visual Studio中定義TRACE常量
System.Diagnostics.Trace的所有方法的周圍都有一個[Conditional("TRACE")]
。
我的問題是爲什麼你有沒有把這個關掉?我的意思是,如果你沒有定義任何跟蹤監聽器,那麼它就不會像你要填寫日誌或什麼東西。對我來說感覺很奇怪。如果你正在努力調用Trace,爲什麼你不想通過App/Web.config來控制它,而是通過一個編譯器開關來控制它,這樣就排除了無需重新開啓的可能性重新編譯。
我錯過了什麼嗎?當然,它不會對性能有害,對吧?
即使沒有偵聽器,調用Trace()也不是免費的。使它非常昂貴並不困難。 –
雖然我認爲它不夠細化。您可能只想跟蹤部署中的某些類型的事件(警告,錯誤)以便記錄它們;而在調試中,您可能需要一切(信息,詳細信息等)。應該確實有TRACE_ERROR,TRACE_VERBOSE等。 – luksan
有關TRACE和優化構建的更多信息,請參閱http://stackoverflow.com/questions/6911863/setting-up-ac-sharp-application-for-max-performance-build 。 – MBentley