2009-04-24 4 views
0


Asp.Net는 영문의 변화를 감지하지만 CS 파일

Q1 - Asp.Net는 원본 파일을 변경할 때 감지 할 수 있으며, 자동으로 다음 요청이

을 도착하면 응용 프로그램을 recompilles


A) 그러나이 나타납니다 웹 사이트와 Asp.Net 웹 프로젝트의 ASP와 관계없이 코드 숨김 파일 (.cs에서) 또는 영문 파일에서 발생 여부, 변화를 감지 할 수있다. 닷넷은 aspx 파일 내에서 일어나는 변경 사항 만 탐지하지만 .cs 파일 내의 변경 사항은 탐지하지 않습니다. ! 왜 그런가요? 새로운 영문 또는 CS 파일을 웹 사이트에 추가 된 경우


B) Asp.Net도 감지합니다. 그러나 다음 요청시 추가 된 파일 만 컴파일 할 것인가 아니면 모든 응용 프로그램의 파일을 다시 컴파일 할 것인가? 다른 영문 파일은 웹 사이트 프로젝트를 통해 생성하는 동안 웹 서버에 대한 응용 프로그램이 여러 영문 파일이 포함되어있는 경우


C)) 일부 웹 프로젝트에 의해 생성 (및 파일 뒤에 자신의 코드는 하나의 어셈블리 안에있는 Asp.Net은 특정 aspx 파일에 Bin 디렉토리에있는 어셈블리 내에 포함 된 코드가 있는지 여부를 파악할 수 있습니까?


Q2 "코드 숨김 속성은 비주얼 스튜디오 웹 폼 디자이너에 의해 사용된다. 속성은 런타임에 사용되지 않습니다. "

  • 내가 코드 숨김 속성으로 인해 모든 .cs 파일을 하나의 어셈블리로 컴파일, 따라서 VS 클래스를 찾는 문제가 없습니다 있다는 사실에 런타임에 사용하지 않는 가정 aspx가 상속 속성을 통해 클래스의 이름을 알려주는 한!

  • 반면에 Asp.Net 코드 숨김 모델에는 src 특성이 필요합니다. 여기 cs 파일은 별도의 어셈블리로 컴파일되므로 asp.net은 CodeFile 특성으로 지정된 파일의 이름을 알아야하기 때문에 어떻게 든이 파일이 컴파일 된 어셈블리의 이름을 알아낼 수 있습니까?


고맙습니다

답변

2

ASP.NET은 기존 어셈블리의 ASPX 컴파일을 완료하는 데 필요한 형식을 찾을 수없는 경우 파일 뒤에 코드를 찾습니다. cs 파일의 코드 종속성은 ASPX 파일의 임시 어셈블리를 빌드 할 때 필요한 경우에만 만들어집니다.

따라서 웹 프로젝트에서 모든 코드 비헤이비어 cs 파일이 단일 어셈블리로 컴파일되는 경우 ASPX 용 임시 어셈블리를 컴파일 할 때 필요한 유형이 이미 있기 때문에 코드 뒤에 cs가 필요하지 않습니다. 미리 조립 된 조립품. 따라서 임시 어셈블리와 cs 파일간에 종속성이 생성되지 않으므로 cs 파일을 변경해도 기존 임시 어셈블리가 무효화되지 않습니다. 배포시 cs 파일은 존재하지 않습니다.

웹 사이트에는 코드 숨김의 모든 유형을 포함하는 사전 제작 된 어셈블리가 없기 때문에 코드 숨김 파일은 ASPX의 임시 어셈블리를 완료하는 데 필요하므로 cs 파일의 종속성은 임시 어셈블리에 추가되었습니다. 따라서 cs 파일을 변경하면 임시 어셈블리가 무효화됩니다.

+0

두 분 모두 도움을 주셔서 감사합니다. 추신 : 죄송합니다. 답장을 보내지 않으셔서 죄송합니다.하지만 집에 없었습니다. – SourceC

2

Q1 A : 웹 사이트가 동적으로 컴파일하고 웹 응용 프로그램은 명시 적으로 컴파일되어 있기 때문입니다. 두 유형을 비교하는 표는 This article을 참조하십시오.

Q1 b : 기본적으로 모든 것이 다시 컴파일됩니다. 그러나 .net 3.5 sp1 (Knowledgebase article, downloads)에 대한 핫픽스가 있습니다.이 핫픽스를 사용하면 모든 항목을 다시 컴파일하려는 경우 또는 변경된 파일 만 컴파일하려는 경우 선택할 수 있습니다.

관련 문제