2012-03-25 106 views
1

我有一個sln,其中一個consile應用程序是thr解決方案的開始。如何從非控制檯應用程序項目寫入控制檯

如何從庫項目登錄到控制檯?

(我指的是dll項目propapbly不允許,

,因爲它並不總是由控制檯應用程序運行。有時其他框架,不是嗎?)

+0

你需要澄清事情有點 - 什麼是「控制檯」的意思是,你在這方面?你是否想爲了調試的目的而記錄/追蹤事物,或者在任何時候都有一個控制檯類型的輸出 - 無論你的應用程序是form/wpf還是其他什麼?什麼是應用程序體系結構,以及控制檯的用途 - 您是否需要「通用」解決方案或僅適用於一個應用程序... – NSGaga 2012-03-25 21:58:06

+0

我想將調試數據從BLL(庫項目)寫入屏幕,以便用戶可以閱讀 – 2012-03-27 19:00:11

回答

4

這在技術上是可行的任何代碼使用System.Console類寫入控制檯。因爲一個進程範圍的鎖需要同步的目的

    • 寫入控制檯相對昂貴:然而,這是不好的形式爲庫的多種原因這樣做,包括來自庫的控制檯可能會讓任何人從控制檯應用程序中消耗該庫。這將有可能使圖書館這樣的障礙,它不會在這樣的環境中使用

    相反,你通常會使用一個日誌抽象如由System.Diagnostics.TraceSwitch或通過日誌庫,像log4net提供。然後,您可以配置應用程序,以將日誌語句重定向到控制檯,另一個文件,數據庫或任何您真正喜歡的內容。

  • 0

    好吧,幾點。

    如果你從控制檯寫入到控制檯,而它是控制檯應用程序的一部分,它實際上會寫入控制檯。不過,我認爲你本能地知道你可能不應該從一個庫中這樣做,因爲就像你說的那樣,你的客戶端應用程序將想要以不同的方式呈現它,例如web應用程序作爲html,WPF應用程序作爲XAML等。

    我建議你簡單地在你的庫中提供一個機制來將你的消息作爲一個字符串返回,然後將它留給客戶端應用程序來渲染他們喜歡的東西。

    相關問題