IDE 없 이 C\#Hello World 를 쓰 는 방법

5089 단어 C#HelloWorldCLR
Visual Studio 등 IDE 로 C\#의 Hello World 를 쓰 는 것 은 매우 간단 하지만 IDE 에서 벗 어 나 면 Hello World 를 출력 할 수 있 습 니까?일 할 때 IDE 에서 벗 어 나 는 것 이 아니 라 CLR 의 실행 모델 을 배 워 보 자.
Hello World
새 메모 장 을 만 들 고 다음 코드 를 입력 하 십시오.HelloWorld.txt 로 저장 하 십시오.

using System;  
namespaceHelloWorld  
{  
  classProgram  
  {  
    static voidMain(string[] args) {  
      Console.WriteLine("Hello World!");  
      Console.ReadKey();  
    }  
  }  
} 
Visual Studio 2008(2005,2010)명령 알림 프로그램 열기

Hello World.txt 디 렉 터 리 로 바 뀌 었 습 니 다.

실행 명령:csc/out:Hello.exe HelloWorld.txt

의외 의 일이 없 으 면 Hello.exe 를 컴 파일 하여 Hello World 를 출력 할 수 있 습 니 다.
CLR 실행 모델-컴 파일 기간
CLR 프로그램의 실행 과정 은 크게 두 단계 로 나 뉘 는데 컴 파일 기간 과 실행 기간 이 고 컴 파일 기간 과정 은 대체적으로 다음 과 같다.

그 중에서 컴 파일 기간 은 논리 적 으로 도 두 단계 로 나 눌 수 있다.
CLR(C\#)컴 파일 러 는 소스 코드 파일 을 받 아들 이 고 위탁 관리 모듈 로 컴 파일 합 니 다.위탁 관리 모듈 은 IL 코드,메타 데이터,CLR 1 등 구성 부분 을 포함 합 니 다.위의 예 는 Hello World.txt 를 위탁 관리 모듈 로 컴 파일 하 는 것 입 니 다.
일반 프로그램 집합 에는 많은 소스 코드 파일(여 기 는 Hello World.txt 만 있 습 니 다)과 자원 파일 이 포함 되 어 있 습 니 다.두 번 째 단 계 는 각 소스 코드 파일 과 자원 파일 을 컴 파일 한 결 과 를 프로그램 집합 으로 통합 하 는 것 입 니 다.
위의 두 단 계 를 실행 하면 XX.dll 또는 XX.exe 의 프로그램 집합 을 얻 을 수 있 습 니 다.위의 Hello.exe 와 같 습 니 다.
컴 파일 러 는 위탁 관리 모듈 로 컴 파일 해 야 하 는 지 자원 파일 로 컴 파일 해 야 하 는 지 어떻게 압 니까?사실은 컴 파일 러 에 게 모든 파일 을 어떻게 컴 파일 하 는 지 명확 하 게 알려 야 합 니 다.이것 은 Visual Studio 의 파일 속성 생 성 작업 에 대응 합 니 다.
Visual Studio 에서 자원 솔 루 션 을 해결 하 는 파일 을 오른쪽 클릭 하 십시오-->속성-->생 성 작업:

Class 1 을 끼 워 넣 은 자원 으로 지정 합 니 다.ILSpy 로 보면 Class 1 을 프로그램 에 만 끼 워 넣 는 것 을 발견 할 수 있 습 니 다.이름 은:네 임 스페이스 입 니 다.파일 이름:

컴 파일 러 가 컴 파일 을 시도 하도록 그림 을 컴 파일 로 설정 할 수도 있 지만 잘못 보고 할 수도 있다.
운행 기간
위 에 프로그램 집합 이 생 성 되 었 습 니 다.프로그램 집합 에 있 는 것 은 IL 코드 입 니 다.실행 가능 한 코드 가 아 닙 니 다.IL 은 CPU 와 무관 한 기계 언어 입 니 다.프로그램 집합 이 호출 될 때 까지 JIT(Just-in-Time,실시 간)컴 파일 러 에서 이 컴퓨터 코드(CPU 명령)로 컴 파일 합 니 다.실행 할 때 CLR 은 다음 절 차 를 수행 합 니 다.
◆프로그램 집합의 보안 특성 검사 하기;
◆메모리 에 공간 을 분배 한다.
◆프로그램 에 집 중 된 실행 가능 코드 를 JIT 컴 파일 러 에 보 내 고 그 중 일 부 를 컴 파일 원가 기 코드(CPU 명령)로 보 냅 니 다.
프로그램 집합의 실행 가능 한 코드 는 필요 할 때 JIT 에서 컴 파일 한 다음 에 이 컴퓨터 코드(CPU 명령)는 나중에 프로그램 에서 실 행 될 수 있 도록 캐 시 됩 니 다.프로그램 이 종료 되면 컴 파일 된 이 컴퓨터 코드 도 버 려 집 니 다.
예 를 들 어 위의 코드 를 다음 으로 바 꾸 면:

static void Main(string[] args) { 
  Console.WriteLine("Hello"); 
  Console.WriteLine("World!"); 
  Console.ReadKey(); 
} 
첫 번 째 WriteLine 은 JIT 컴 파일 을 먼저 하고 실행 해 야 합 니 다.WriteLine 코드 가 컴 파일 되 었 기 때문에 두 번 째 WriteLine 은 메모리 블록 에 있 는 코드 를 직접 실행 하고 JIT 컴 파일 을 건 너 뜁 니 다.
메모리 할당,JIT 컴 파일 과정 등 으로 인해 프로그램 이 처음 실 행 될 때 일부 성능 손실 을 초래 할 수 있 습 니 다.ASP.NET 을 쓸 때 이러한 느낌 이 뚜렷 해 지고 F5 를 누 르 면 오래 기 다 려 야 첫 페이지 가 표 시 됩 니 다.
이 과정 을 모 의 실험 해 보 겠 습 니 다.메모리 할당 시간 을 크게 늘 리 고 이 파일 을 참고 하 십시오.Hello World.css(블 로그 원 에 서 는 txt 형식 을 지원 하지 않 습 니 다):

다시 실행 명령:csc/out:Hello.exe Hello World.txt,Hello.exe 를 받 았 습 니 다.실행 중 지연 이 있어 야 Hello World 를 출력 할 수 있 습 니 다.
이 컴퓨터 코드 생 성
.NET 에서 제공 하 는 NGen.exe 를 사용 하면 IL 코드 를 원가 기 코드 로 컴 파일 할 수 있 습 니 다.위의 문 제 를 해결 할 수 있 습 니 다.NGen.exe 는 두 가지 역할 을 합 니 다.
프로그램의 시작 속 도 를 빠르게 합 니 다.코드 가 이 컴퓨터 코드 로 컴 파일 되 었 기 때문에 실행 할 때 더 이상 컴 파일 할 필요 가 없습니다.
프로그램의 프로그램 집합 을 줄 입 니 다.한 프로그램 이 여러 프로 세 스 를 동시에 불 러 옵 니 다.NGen.exe 는 IL 컴 파일 원가 기 코드 를 하나의 단독 파일 에 저장 합 니 다.그러면'메모리 맵'방식 을 통 해 여러 프로 세 스 에 투사 하여 코드 를 공유 할 수 있 습 니 다.모든 프로 세 스 의 코드 를 피 할 수 있 습 니 다.
Visual Studio 2008(2005,2010)명령 알림 프로그램 다시 실행
다음 명령 실행:ngen install Hello.exe:

명령 이 완료 되 었 습 니 다.(내 기계 에 서 는 약 10 초 정도 걸 립 니 다.명령 을 다시 입력 할 수 있 을 때 까지)Hello.exe 를 실행 하면 바로 Hello World 를 인쇄 할 수 있 습 니 다.지연 되 지 않 습 니 다.
ASP.NET 에 대해 Microsoft 는 따로 aspnet 을 제공 합 니 다.copiler.exe,우 리 는 ASP.NET 프로그램 에 스 크 립 트(.bat)사전 컴 파일 러 를 만 들 수 있 습 니 다.다음은 예제(from 조 씨 의 프로그램)입 니 다.
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v / -p .\MyMvcDemo.Web.UI -f -errorstack .\Compliled 
PAUSE
aspnet 에 대하 여copiler.exe 는 소 개 를 많이 하지 않 고 관심 이 있 는 사람 은 스스로 관련 자 료 를 검색 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기