У меня есть сборка c #, которая используется как веб-сайтами, так и приложениями winform. Часть этого dll имеет функциональность, посредством которой он проверяет наличие дополнительного подключаемого модуля dll и использует его, если он присутствует. Это работает путем сканирования своей локальной папки на наличие DLL с соответствующим интерфейсом. Итак, сокращенная форма того, что происходит:
Assembly executingAssembly = Assembly.GetExecutingAssembly();
foreach (FileInfo dllFile in exeLocation.GetFiles("*.dll"))
{
assembly = Assembly.LoadFile(dllFile.FullName);
foreach (Type exportedType in assembly.GetExportedTypes())
{
foreach (Type interfaceType in exportedType.GetInterfaces())
{
if (interfaceType == typeof(IMyInterface))
{
//Found it!
}
}
}
}
К сожалению, при работе под iis7 он создает теневую копию в \ Temporary ASP.NET Files, где каждая dll находится в своей собственной папке, поэтому exeLocation.GetFiles возвращает только одну dll (саму себя). Мне нужно решение, которое будет работать для всех winforms, webforms, services и т. Д. (Желательно без изменения конфигурации iis7)
Есть идеи?