У нас есть приложение Windows Forms, которое загружает различные формы в виде вкладок.Формы хранятся в различных библиотеках DLL, которые хранятся на веб-сайте компании в интрасети.Панель запуска приложений использует отражение для загрузки DLL из URL, а затем открывает определенный запрошенный класс (форма Windows) и отображается в интерфейсе вкладок.Когда мы делаем какое-либо обновление до форм, мы просто копируем DLL-файлы в папку веб-сайта интрасети, а затем Launcher извлекает последнюю версию.
За последние 6-7 лет, пока IE9 не был запущен, все шло гладко.В IE 9 они переделали модуль кеширования.В результате наши библиотеки DLL с кодом отражения кэшируются навсегда.Мы больше не можем делать обновления, просто заменив файл DLL, надеясь, что ядро отражения загрузит последнюю DLL, посмотрев на дату или размер файла.Кэширование хорошо, если оно обновляет кеш при изменении источника.
Мы сталкиваемся с серьезными проблемами, так как клиенты должны удалить свой кэш IE9, или иногда нам нужно перейти к их столу и удалить «Users / AppData / [зашифрованные папки]».
Обновление: здеськод отражения, который мы используем:
Assembly RemoteAssembly;
RemoteAssembly = Assembly.LoadFrom(assemblyURL);
return RemoteAssembly.CreateInstance(typeName);