2017-01-02 1 views
2

나는 최근에 asp.net 응용 프로그램에 대한 응용 프로그램 시작 방법을 발견했습니다. 나는 콘솔 애플 리케이션을 위해 그런 것을 필요로한다. 외부 로깅 DLL이 있습니다. dll을 참조 할 때 일부 로깅 코드가 자동으로 실행되도록 로깅을 구성하려고합니다. 다른 코드가 실행되기 전에 클래스 생성자를 호출하면됩니다. 어떤 도움을 주시면 감사하겠습니다.C# 콘솔 응용 프로그램에서 main 함수 앞에 코드를 자동으로 실행하는 방법이 있습니까?

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

당신은 Main에 들어가기 전에 코드를 실행하는 방법, dasblinkenlight을 검색하면 이미 대답 해 줬어. 그러나 라이브러리를 참조하여 코드를 실행하려는 경우, 이것이 가능하지 않다고 생각합니다.

라이브러리의 코드는 라이브러리의 일부가 사용되면 정적 생성자까지만 실행됩니다. 중단 점을 추가하고 완전히 빨간색으로 변할 때까지 실행을 기다리는 경우 라이브러리가로드되는 시간을 볼 수 있습니다.

추가 기회 : 응용 프로그램의 코드를 편집하지 않으려면

, 당신의 로거 초기화 코드를 호출하는 응용 프로그램을 추가하고 후 원래 응용 프로그램의 Main 그.

+0

거기에 콘솔 응용 프로그램의 app.config 파일에 일부 속성을 포함시킬 수있는 방법이 없기 때문에 내 콘솔 응용 프로그램의 코드 부분을 변경하지 않고 자동으로 DLL 로깅 코드를 호출 할 수 있습니다. –

+0

두 개의 다른 코드가 어떻게 실행되어야합니까? 잇달아 일어나는? 그래서 어느 것이 먼저 오나요? 평행? 자, 애플리케이션 시작 직후 코드에서 이러한 질문을 결정하는 것이 훨씬 쉽습니다. –

+0

@VasudhaGupta 내가 아는 안전한 방법이 없습니다. 나는 많은 추악한 솔루션을 상상할 수 있지만 그 중 어떤 것도 추천하지는 않을 것입니다. :) – Luaan

관련 문제