이 항목은 실제로 나를 화나게합니다. 여기에 간다 :aspx 페이지의 동적 어셈블리를 컴파일하는 동안 AssemblyResolve 이벤트가 발생하지 않습니다.
내 목표는 포함 된 aspx, ascx 등이 포함 된 런타임에 어셈블리를로드하는 것이다. 응용 프로그램을 다시 시작하려면 (이전 버전이로드 된 채로 남아 있음을 알고 있습니다.)
그 목적을 위해 나는 트릭을 수행하는 가상 경로 공급자를 작성했습니다. 프레임 워크를 내 어셈블리로 리디렉션 할 수 있도록 CurrentDomain.AssemblyResolve 이벤트를 구독했습니다.
문제는이 프레임 워크는 내가 다음 얻을 영문 페이지에 대한 동적 어셈블리를 컴파일하려고 할 때 :
이컴파일러 오류 메시지 : CS0400 : 형식 또는 네임 스페이스 이름 '페이지가'에서 찾을 수 없습니다 글로벌 네임 스페이스 (당신은 어셈블리 참조가없는?)
소스 오류 : 공용 클래스 app_resource_pages__version_1_0_0_0__culture_neutral__publickeytoken_null_default_aspx : 글로벌 :: Pages._Default, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandle
Assembly.Load (AssemblyName) 또는 Assembly.LoadFrom (filename)을 사용하여 어셈블리를로드하면 위의 오류가 발생합니다. Assembly.Load (byte [])로로드하면 (잠그지 않도록) 예외가 throw되지만 AssemblyResolve 핸들러가 호출되면 어셈블리가 제대로 반환됩니다 (한번 호출 됨).
그래서 프레임 워크가 asp 태그를 구문 분석 할 때 한 번 호출되지만 aspx 페이지에 대한 동적 어셈블리를 만들려고 시도하지 않을 것으로 추측합니다.
실제 질문은 여기에 무엇입니까? 비 잠금, 비 차단 방식으로 새로운 .aspx 페이지를로드하는 방법? lede 묻혀 보인다. –
질문은 aspx 페이지를 컴파일하는 동안 AssemblyResolve 이벤트가 실행되지 않는 이유입니다. 해결 방법이 있습니까? – John