1) Импорт на самом деле ничего не делает во время выполнения. Это удобство времени компиляции, которое просто позволяет вам ссылаться на типы, используя их неполные имена, такие как Environment вместо System.Environment.
2) Сборка загружается с использованием обычных правил проверки сборки. CLR проверяет различные местоположения перед этими частными путями зондирования, поэтому важно помнить об этом. Если вы ссылаетесь на сборку со строгим именем и ожидаете найти эту сборку в частном пути проверки, предпочтительнее сборка с таким же строгим именем (имя, версия, открытый ключ и т. д.) в GAC. Иногда это может приводить к непредвиденному поведению и обычно вызвано тем, что версия сборки жестко запрограммирована в файле AssemblyInfo.cs и вы забыли ее обновить.
3) После загрузки сборку нельзя выгрузить без выгрузки AppDomain. Но ASP.NET использует «теневое копирование», что означает, что сборки копируются во временный путь перед загрузкой. Это должно оставить исходную сборку разблокированной, и ее можно будет перезаписать. Навскидку, я не уверен, почему вы получаете сообщение об ошибке о заблокированных сборках. В обычном приложении Windows это было бы совершенно нормально и ожидаемо. Но ASP.NET спроектирован так, что вы можете перезаписывать содержимое, код, сборки и т. д. во время работы приложения, что приводит к № 4.
4) На практике нет. Поскольку сборку нельзя выгрузить, невозможно обновить сборку без перезапуска веб-приложения. С технической точки зрения, вы можете загрузить несколько версий сборки, но это не даст желаемых результатов. Любые ссылки во время компиляции по-прежнему будут ссылаться на старую сборку, и вы получите все виды недопустимых исключений приведения, если попытаетесь использовать новую сборку. Но, как я сказал в № 3, в ASP.NET обновление сборок должно быть таким же простым, как замена файлов, и должно происходить автоматически. Вам не нужно перезапускать IIS или рабочие процессы вручную.
Следующие ссылки могут быть интересны.
Как среда выполнения находит сборки
Рекомендации по загрузке сборок
Сборки теневого копирования
Выгрузка сборок — Сюзанна Кук
ОБНОВЛЕНИЕ Прочитав немного больше о теневом копировании, я думаю, что причина, по которой вы можете столкнуться с проблемой заблокированных сборок в папке extras, заключается в том, что ASP.NET, вероятно, указывает только папку «bin» для теневое копирование.
18.03.2010