게시 중 새 사전 컴파일 옵션은 MVC4 응용 프로그램에 어떤 영향을 미칩니 까?


85

그래서 최근에 Visual Studio 2012를 업데이트 2로 업데이트했습니다. Lo를보고 다음에 내 애플리케이션을 게시 할 때 (이 경우 파일 게시를 통해) 세 가지 새로운 옵션이 있음을 알았습니다.

  1. 게시하기 전에 모든 기존 파일 삭제
  2. 게시 중 사전 컴파일 (구성 링크 포함)
  3. App_Data 폴더에서 파일 제외

첫 번째와 세 번째 옵션은 자명하지만 두 번째 옵션에 대한 문서는 MVC에 적용되므로 찾을 수 없습니다. 확인했을 때 사이트에서 생성 된 파일에 변화가없는 것 같고 성능에 실제 변화가 보이지 않습니다.


함수의 위치는 새 것일 수 있지만 함수 자체는 그렇지 않습니다. 이 경우에도 하지 않았다 MVC를 컴파일 간주, 웹폼은 MVC 프로젝트에서 상호 운용된다.
그랜트 토마스

답변:


84

ASP.NET 프리 컴파일러를 사용하면 MVC 앱에 다음과 같은 영향을 미칠 수 있습니다.

  • App_Code에 항목이 있으면 배포 전에 DLL로 미리 컴파일됩니다. 미리 컴파일하지 않으면 ASP.NET 런타임에 의해 즉석에서 발생합니다.
  • 페이지를 업데이트 할 수 없도록 하는 옵션을 선택하면 (예 : 고급 설정 대화 상자의 첫 번째 확인란 선택 취소) 런타임시 동적으로 컴파일하는 대신 뷰 (ASPX 및 Razor)도 미리 컴파일합니다. "미리 컴파일 된 사이트를 업데이트 할 수 있도록 허용"의 기본 (선택된) 설정을 사용하면 전체 프로젝트를 다시 빌드 할 필요없이보기 콘텐츠를 업데이트 할 수 있습니다.

App_Code에 파일이없고 사이트를 업데이트 가능한 상태로 유지하려는 경우 많은 작업을 수행하지 않는 것 같습니다.


7
@Elsimer .cshtml 파일은 여전히 ​​존재하지만 그 내용이 미리 컴파일 된 경우 해당 내용이 "사전 컴파일 도구에 의해 생성 된 마커 파일이며 삭제해서는 안됩니다!"로 대체됩니다.
Jimmy

4
또한 성능 향상은 대부분 컴파일러가 각 페이지에 대해 동적으로 호출 될 때 초기 사이트 시작에 있습니다. 페이지가 한 번 히트 (및 컴파일)되면 해당 컴파일 결과는 사전 컴파일하지 않은 경우에도 후속 페이지로드에 사용됩니다.
Jimmy

15
페이지를 업데이트 할 수없는 추가 이점은 VS가 라이브 사이트로 이동하기 전에 뷰에서 유형 오류를 발견한다는 것입니다.
Chris

4
@Chris 사전 컴파일 옵션없이 이러한 오류가 포착되지 않으면 테스트 전략을 재고해야합니다.
user247702 2014 년

2
@ AndersLindén : 컨트롤러 동작의 실제 렌더링 된 응답을 테스트하십시오. 그러면 Razor가 호출되고 예외가 생성되면 테스트가 실패합니다. 그러나 이것이 코드에서 뷰가 매우 가벼워 야하는 이유이기도합니다 . 클래스에서 할 수있는 것처럼보기 코드에서 세분화 된 단위 테스트를 실제로 수행 할 수 없습니다. 거의 통과하거나 실패 할 뿐이며, 그 때에도 통과는 예외가 발생하지 않았 음을 의미하며 실제로 예상 한대로 수행했다는 의미가 아닙니다.
Chris Pratt

0

오래된 질문이지만 비슷한 문제가 발생하고 나눌 가치가 있다고 느낍니다.

내 오류 메시지는이 게시물에서 동일합니다. 내 프로젝트는 MVC5이며 Visual Studio 2013 전문가로 빌드합니다. 컴파일 오류 : 'ASP.global_asax'유형이 두 DLL에 모두 있습니다.

필자의 경우 사전 컴파일 옵션을 사용하면 bin 폴더에 App_global.asax.dll 파일이 있으며 위의 오류 메시지가 발생합니다. 먼저 서버에서 App_global.asax.dll을 제거하고 응용 프로그램 풀을 다시 시작하면 문제가 사라집니다. 그런 다음 다른 접근 방식을 시도하고 사전 컴파일을 선택 취소하고 다시 게시하고 서버에 다시 배포하면 문제가 사라졌습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.