2017-01-02 6 views
2

私は最近、asp.netアプリケーションのためにそこにあるアプリケーションの開始方法を見つけました。私はコンソールアプリのようなものが必要です。私は外部のロギングDLLを持っています。私は、dllを参照する際にいくつかのロギングコードが自動的に実行されるようなロギングを設定したいと考えています。私は他のコードが実行される前にクラスコンストラクタを呼び出す必要があります。どんな助けもありがとう。主な機能の前にコードを自動的に実行する方法はありますか?

Like Application Insightsは、mvcアプリケーションへの参照の追加と計測ファイルの設定ファイルへの追加時にperfカウンタを自動的に収集します。私はコンソールアプリのようなものが必要です。

+0

スタティックブロックを使用することができます – Prabu

+0

ここをクリックしてください@Vasudha Gupta http://stackoverflow.com/questions/8459095/static-code-blocks – Prabu

+0

ちょうど分かります:ロード時にロギングDLLが自動的に何かを実行したい別のアセンブリ(あなたのコンソールアプリケーションのようなもの)で、_余分なコードをコンソールアプリケーションに追加する必要はありませんか?それはそう簡単ではないようです:http://stackoverflow.com/questions/8570999/hooking-into-an-onload-for-class-libraryおよびhttp://stackoverflow.com/questions/5365994/are-module- initializers-supported-in-silverlight-and-windows-phone-7 –

答えて

5

Mainを含むクラスの静的初期化子内の任意のコードが前Mainに入るために実行されます。

public class MyConsoleApp { 
    static MyConsoleApp() { 
     Console.WriteLine("I run before Main"); 
    } 
    public static void Main(string[] args) { 
     Console.WriteLine("Main"); 
    } 
} 

Demo.

+0

これを私のコードに実装しました。ありがとう! –

0

あなただけMaindasblinkenlightに入る前にコードを実行する方法を検索する場合すでにあなたに答えを与えました。しかし、ライブラリを参照するだけでコードを実行したい場合は、これはまったく可能ではないと私は考えています。

ライブラリ内のコードは、ライブラリの何かが使用されている場合にのみ、静的なコンストラクタであっても実行されます。ブレークポイントを追加してから完全に赤になるまで実行を待つと、ライブラリがロードされる時間を見ることができます。

追加機会:あなたはアプリケーションのコードを編集したくない場合は

、ちょうどあなたのロガーの初期化コードを呼び出すアプリケーションを、追加した後、元のアプリケーションのMainいます。

+0

私のコンソールアプリケーションのコード部分に変更を加えることなく自動的に私のロギングDLLのいくつかのコードを呼び出すコンソールアプリケーションのapp.configファイルにいくつかのプロパティを含めることができる方法はありません。 –

+0

2つの異なるコードがどのように実行されるべきですか?シーケンシャル?だから最初に来る?平行?さて、アプリケーションの開始直後にこれらの質問をコードで決めるほうが簡単です。 –

+0

@VasudhaGupta私が知っている安全な方法はありません。私は非常に醜い解決策の多くを想像することができますが、私はそれらのいずれかをお勧めするつもりはない:) – Luaan

関連する問題