Событие AssemblyResolve не запускается во время компиляции динамической сборки для страницы aspx
Этот действительно меня бесит. Вот оно:
Моя цель - загружать сборки во время выполнения, которые содержат внедренные aspx, ascx и т. Д. Я также хотел бы не блокировать файл сборки на диске, чтобы я мог обновлять его во время выполнения без перезапуска приложения (я знаю, это оставит предыдущую версию (и) загруженной).
Для этого я написал провайдера виртуального пути, который делает свое дело. Я подписался на событие CurrentDomain.AssemblyResolve, чтобы перенаправить фреймворк на мои сборки.
Проблема в том, что когда платформа пытается скомпилировать динамическую сборку для страницы aspx, я получаю следующее:
Сообщение об ошибке компилятора: CS0400: не удалось найти тип или имя пространства имен 'Pages' в глобальном пространстве имен (отсутствует ссылка на сборку?)
Ошибка источника: общедоступный класс
Я заметил, что если я загружаю сборку с помощью Assembly.Load (AssemblyName) или Assembly.LoadFrom (filename), я не получаю вышеуказанную ошибку. Если я загружаю его с Assembly.Load (byte []) (чтобы не блокировать его), генерируется исключение, но мой обработчик AssemblyResolve при вызове возвращает сборку правильно (она вызывается один раз).
Поэтому я предполагаю, что он вызывается один раз, когда инфраструктура анализирует разметку asp, но не когда она пытается создать динамическую сборку для страницы aspx.