ASP.net VirtualPathProvider для динамической загрузки элементов управления - PullRequest
0 голосов
/ 26 июля 2011

Я использую VirtualPathProvider для загрузки элементов управления (ascx), которых нет во время компиляции.Поэтому, когда запрашивается определенная структура пути, VirtualPathProvider переписывает путь к ascx и загружает dll, которая содержит код для этого элемента управления.

Все работает нормально, кроме загрузки dll.Я могу загрузить сборку, но сайт не может ее найти.Если я положу его в папку bin, все будет работать нормально.

Для загрузки используемой сборки:

System.Reflection.Assembly.LoadFrom(file.FullName);

Как загрузить эту сборку, чтобы ее можно было использовать, когда ascxотображается на странице?

Опять же, я мог бы поместить dll в папку bin сайта, но так как это динамический контент, я предпочитаю хранить все как изолированные.

1 Ответ

0 голосов
/ 26 июля 2011

Значит, вы звоните

System.Reflection.Assembly.LoadFrom(file.FullName);

Но это не выдает исключение при этом, но все равно не находит вашу сборку при рендеринге файла ascx?Вы уверены, что ваш файл ascx ссылается на полное имя сборки?

Скорее всего, вам нужно обработать событие AssemblyResolve:

AppDomain.CurrentDomain.AssemblyResolve += OnCurrentDomainAssemblyResolve

private static Assembly OnCurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)
{
    if (args.Name == "myDynamicAssemblyName") return _myPreviouslyLoadedDynamicAssemblyObtainedFromAssemblyLoadFrom;

    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...