2012-03-25 17 views
1

私はslnを持っています。ここではconsileアプリケーションはthrソリューションのスターターです。コンソール以外のアプリケーションプロジェクトからコンソールに書き込む方法

ライブラリプロジェクトからコンソールにどのようにログオンできますか?

(私はそれは常にコンソールアプリケーションによって運営されていないとして、DLLプロジェクトがpropapblyことは、

ことはできません。時には他のフレームワークによって、無意味?)

+0

を見ることができました - 「コンソール」は、この文脈ではあなたに何を意味しています?あなたのアプリケーションが/ wpf形式なのかどうかにかかわらず、デバッグ目的のために物事を記録/追跡したいのですか、いつもコンソール出力をしたいのですか?アプリケーションアーキテクチャー、そしてコンソールの目的は何ですか?また、「汎用」のソリューションが必要なのか、それとも1つのアプリケーションだけが必要なのでしょうか... – NSGaga

+0

BLL(ライブラリープロジェクト)のデバッグデータを画面に書き込んで、 –

答えて

4

それは任意のための技術的に可能ですコンソールに書き込むためにSystem.Consoleクラスを使用するコード。プロセス全体のロックがへの書き込み同期目的

  • のために必要とされるので、コンソールへの書き込み

    • は比較的高価である。しかし、それには、いくつかの理由でこれを行うには、ライブラリのために良い形ではありませんライブラリーのコンソールは、コンソールアプリケーションからそのライブラリーを消費している人には迷惑をかける可能性があります。それはおそらく、ライブラリにそれが

    代わりに、このような文脈で使用されないような障害になるだろう、あなたは通常、System.Diagnostics.TraceSwitchまたはlog4netなどのログライブラリによって提供されるよう、ロギングの抽象化を使用します。次に、ロギングステートメントをコンソール、別のファイル、データベース、またはあなたが本当に好きなものにリダイレクトするようにアプリケーションを設定できます。

  • 0

    よく、いくつかの点。

    コンソールアプリケーションの一部である間にdllからコンソールに書き込むと、コンソールに実際に書き込みが行われます。しかし、私はあなたが本物のことを知っているだろうと思っているでしょう。あなたが言うように、あなたのクライアントアプリケーションは、HTMLのようなWebアプリケーション、XAMLのようなWPFアプリケーションなど、さまざまな方法でレンダリングしたいからです。

    メッセージを文字列として返すようにライブラリに機構を用意し、それをクライアントアプリケーションに任せて、好きなようにレンダリングすることをお勧めします。

    0

    イベントを抽象化して、何かを記録する必要があるときにクラスライブラリがイベントをポストするようにすることもできます。コンソールアプリケーションは、イベントをサブスクライブし、詳細については、単純なConsole.WriteLine()

    を作り、あなたは物事を少し明確にする必要が

    http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx