2009-12-13 3 views
3

.NET은 기본적으로 Ahead of Time Compilation을 지원합니까? Mono는 다른 플랫폼 (예 : IPhone)에서 JITing 문제를 피하기 위해이 작업을 수행했으며 dll을 원시 코드로 빌드하고 IIS에서 실행할 수 있는지 궁금합니다. dev의 경우 VS와 IIS의 스위치를 반대로 전환 할 수 있기를 원하므로 컴파일 대기 대신 JIT 대기를 한 번만 기다려야합니다.시간 컴파일보다 앞서 ASP.NET

+0

앞서 개발 컴파일도 멋질 것입니다! – Pierreten

답변

1

IL에서는 사전 컴파일 할 수 있지만 원시 코드에서는 사전 컴파일 할 수 없습니다. NGEN은 IIS에로드되는 방식 때문에 웹 사이트와 호환되지 않습니다.

전체 사이트를 단일 DLL로 병합 할 수있는 Web Deployment Project 외에도 "웹 사이트"프로젝트 대신 클라이언트 측 컴파일을 사용하는 "웹 응용 프로그램"프로젝트를 사용할 수도 있습니다 이것은 서버 측 컴파일을 수행합니다.

+0

IIS에서 NGEN이 작동하지 않는다는 내용의 답을 얻을 수 있습니다. – Trent

+1

NGEN이 웹 사이트에서 작동하지 않는다는 내용의 참조는 무엇입니까? Microsoft 컨설팅 서비스는이를 사용해야 함을 나타냅니다. 참조 : http://blogs.msdn.com/b/mcsuksoldev/archive/2011/01/19/common-performance-issues-on-asp-net-web-sites.aspx –

0

보기 : http://msdn.microsoft.com/en-us/library/ms229863%28VS.80%29.aspx에서

-u

는 :

"Aspnet_compiler.exe는 .aspx와 페이지와 같은 내용의 후속 업데이트를 할 수있는 미리 컴파일 된 응용 프로그램을 만들도록 지정합니다

이 옵션을 생략하면 결과 응용 프로그램에 컴파일 된 파일 만 포함되어 있으므로 배포 서버에서 업데이트 할 수 없습니다. 소스를 변경하여 응용 프로그램을 업데이트 할 수 있습니다. arkup 파일 및 재 컴파일. "

2

Web Deployment Projects은 빌드의 일부로 앞서 언급 한 프리 컴파일러 (aspnet_compiler.exe)를 실행할 수 있습니다.

프리 컴파일러는 .aspx, .ascx, .master 파일을 구문 분석하고 파서 생성 코드를 어셈블리로 컴파일합니다. 이러한 어셈블리는 사이트가 실행될 때도 JITed가 필요합니다. 이론적으로 이것은 NGen이 유용 할 수있는 곳이지만 서버 측 코드에는 사용하지 못했습니다 (경험적으로 말하면 JITing은 장기 실행 응용 프로그램에 더 좋습니다).

나는 old article on the aspnet_compiler here입니다.

+0

웹 배포 프로젝트를 살펴 봐야합니다. – Trent

+0

어쩌면 이론상 Ngen과 함께 Web Deployment Project와 사후 구축 단계 사이에 뭔가를 조합 할 수 있습니다. – Trent

+0

웹 배포 프로젝트의 경우 +1입니다. @ 트렌드 : 유감스럽게도 웹 사이트에서는 NGEN을 사용할 수 없습니다. – RickNZ

0

ngen을 사용하면 특정 기계 명령어 세트 (응용 프로그램이 실행되고있는 프레임 워크)에 대한 특정 버전의 프레임 워크에 대해 응용 프로그램의 원시 코드 버전이 빌드된다는 것에 유의하십시오. 프레임 워크의 새 버전을 설치하거나 하드웨어를 변경하면 원시 버전을 재생성해야합니다.

관련 문제