2009-07-15 2 views
2

aspnet_compiler.exe를 사용하여 배포 용 응용 프로그램을 사전 컴파일합니다.배포 용 asp.net 솔루션 미리 컴파일

그러나, 나는 두 가지 이유는, 작동 생각하지 않습니다

  • 을 나는 C에서 내 응용 프로그램 어셈블리 참조 : \ WINDOWS \ Microsoft.NET 프레임 워크 \ \ V2.0.50727 임시 ASP.NET 파일 \ , 심지어이 디렉토리를 수동으로 지우더라도 & 애플 리케이션을 다시 시작합니다.
  • 성능이 JIT 응용 프로그램에 도달했습니다. 이것은 특히 '한 번'이라 할지라도 피하고 싶습니다.

는 여기에 내가 뭘하는지 구체적이다 :

  1. 스튜디오에서 솔루션을 구축 할 수 있습니다.
  2. aspnet_compiler.exe -v/Foo -pc : \ builddir c : \ deploydir을 실행합니다. 여기서 Foo는 내 응용 프로그램이 실행되는 vdir이고 c : \ builddir은 스튜디오가 빌드되는 곳이며 c : \ deploydir은 내가 30 초 후에 응용 프로그램이 표시 http://localhost/Foo
  3. 에 액세스하려면 웹 서버에 \ deploydir
  4. 을, 나는 어셈블리는 임시 ASP.NET 파일에 생성 된 것을 볼 수 있습니다
  5. 을 :.
  6. 나는 그 C 복사합니다. 이 주목할만한 있다면

, 내가 .NET 3.5 SP1/스튜디오 2008 SP1. 컴파일 디버깅을 사용하고 = 거짓도의 web.config에 설정됩니다.

+0

이 웹 사이트 또는 웹 응용 프로그램 프로젝트입니까? –

+0

그냥 웹 사이트. – JohnW

답변

2

당신의 두 지점은 이론에 불과하다 : JIT 오버 헤드가 여전히있을 수 있도록

  1. ASP.NET 사전 컴파일을 네이티브 이미지 생성을 초래하지 않습니다. 작업자 프로세스 생성 오버 헤드가있을 수 있습니다.

  2. ASP.NET 사전 컴파일에는 모든 항목 (ASPX 내용 포함 ...) 또는 소스 코드 (-u 스위치로 지정할 수 있음)를 컴파일하는 옵션이 있습니다. 후자의 경우 해당 어셈블리는 여전히 ASPX 파일 용으로 생성됩니다. 전자의 경우 조립품 생성이 아닙니다. 런타임에서는 /bin의 어셈블리를 복사하여 Temporary ASP.NET Files에 캐시합니다. 당신은 바이트로 어셈블리 바이트를 비교하여이 사실을 확인하고이 동일한 것을 볼 수 있습니다.

+0

msdn.microsoft.com/en-us/library/...를 통해 # 1 (내게는 논리적 인 것으로 보임)에 대한 응답을 조정하려고하는데, "ASP.NET 웹 사이트를 미리 컴파일하면 사용자가 처음 요청할 때 페이지를 컴파일 할 필요가 없기 때문에 초기 응답 시간이 빨라집니다. 특히 자주 업데이트되는 대규모 웹 사이트에 유용합니다." # 2는 위의 샘플을 제외하고는 N/A입니다. – JohnW

+1

빠른 것은 상대적입니다. JIT 컴파일을 방지하기위한 것이 아니라 ASPX 파서 및 C# 컴파일러를 호출하지 않는 프리 컴파일되지 않은 응용 프로그램보다 빠릅니다. –

+0

죄송합니다 ... http://msdn.microsoft.com/en-us/library/ms227972.aspx는 참조 URL입니다. – JohnW

1

aspnet_compiler.exe으로 웹 사이트를 미리 컴파일하지 않으면 JIT가 코드를 컴파일하지 않습니다. 코드를 컴파일하려면 ngen해야합니다.

네이티브 이미지 생성기 (Ngen.exe)

는 관리되는 응용 프로그램의 성능을 향상시키는 도구입니다. Ngen.exe는 네이티브 이미지를 만듭니다. 은 컴파일 된 프로세서 특정 컴퓨터 코드가 들어있는 파일이고 은 로컬 컴퓨터의 기본 이미지 캐시에 설치합니다. 런타임 대신 원래 어셈블리를 컴파일하기 위해 적시 (JIT) 컴파일러를 사용하여 캐시에서 네이티브 이미지를 사용할 수 있습니다.

+0

ngen이 asp.net에 적용하지 않는 것은 분명합니다. http://support.microsoft.com/kb/331979 – JohnW

+1

KB 기사가 ASP.Net 1.0 및 1.1에 적용됨 – stuartd

+1

해당 기사는 ASP.NET 1.x에만 적용됩니다. - NGEN 어셈블리는 2.0 이후 지원되었습니다. - 참조하십시오. http://msdn.microsoft.com/en-us/magazine/cc163808.aspx –

관련 문제