이 사이트의 조언을 기반으로 ASP MVC 응용 프로그램 용 플러그인 솔루션을 작성했지만로드 블록에 도달하여 도움이됩니다. 플러그인 시스템이 어떻게 작동하는지에 대해 깊이 생각하지 않고 컨트롤러를 성공적으로로드하고 적절한 뷰를 찾습니다. 문제는 모든 플러그인 참조를 해결할 수 없기 때문에 뷰가 컴파일되지 않는다는 것입니다 (플러그인 DLL은 다른 호스트 응용 프로그램에서 알 수없는 DLL).ASP MVC 페이지 컴파일 엔진에 대한 참조 추가
CurrentDomain에서 AssemblyResolve를 사용하고 있지만 기본 BuildManager가 뷰를 컴파일 할 때 호출되지 않고 대신 web.config 섹션에서 어셈블리 목록을 가져옵니다. 모든 플러그인 파일을 GAC에 추가하고 해당 섹션에 참조를 추가하면 제대로 작동합니다. 그러나 모든 플러그인에 대해 web.config를 변경해야하는 경우 플러그인 시스템을 사용하는 목적에 위배됩니다.
약간의 그림 문제 설명하기 : Plugin.dll --references -> PluginServices.dll
URL http://mysite.com/some/index MVC 응용 프로그램 --load -> Plugin.dll PASS
MVC 응용 프로그램을 --load -> Plugin.SomeController PASS
MVC 응용 프로그램 --find -> 플러그인 \ 조회수 \ 몇몇 \ Index.aspx PASS
MVC 응용 프로그램 --compile -> Index.aspx FAIL (일 e 뷰에서 찾을 수없는 PluginServices의 유형을 사용함)
web.config를 변경하지 않고 컴파일이 통과하도록 BuildManager에 대한 참조를 동적으로 추가하는 방법이 있습니까?
미리 감사드립니다.
아주 멋진 아이디어 인 것 같습니다. 어떻게 그걸 좋아하지 않아? –
유일한 이유는 GAC에서 파일을 계속 업데이트해야하기 때문에 약간 성가기 때문입니다. 그 외에는 잘 작동하는 것 같습니다. – Gil