Согласно документации для Системы. Блок:
Методы LoadFile и LoadFrom предоставлены для редких сценариев, в которых блок должен быть определен путем.
Они предполагают, что Вы чаще всего загружали бы блок его отображаемым именем (например, "Система. Windows. Формы, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089").
Это не имеет никакого смысла мне. Если бы Вы хотели сослаться на блок его версией и открытым ключом, то Вы добавили бы ссылку во время компиляции; Вы не загрузили бы его во времени выполнения с помощью класса блока. Типичный сценарий для загрузки блока во времени выполнения - при загрузке плагина который был бы сделан путем - так как Вы или сканируете каталог для плагинов или читаете некоторую декларацию, в которой говорится, где они расположены.
Почему в документах говорится, что, среди сценариев, где Вы динамично загружаете блок, загружая его путем, "редко"? Насколько я могу сказать, это загружает его отображаемым именем, которое было бы редко.
Что ж, это должно быть редкостью, потому что это так хлопотно. Но да, плагины обычно загружаются с помощью LoadFrom (). Никогда не с помощью LoadFile (), который вызывает настоящую проблему.
Проблема в том, что вы не можете точно предсказать, что произойдет со сборками, от которых зависит подключаемый модуль. Правильно разрешить эти проблемы - пустяк. Решение, которое вам следует отдать предпочтение, - это файл .config, чтобы вы могли использовать Load () и пути зондирования были предсказуемыми.
Я считаю, что они говорят, что если вы укажете путь, он будет загружаться с этого пути, но они предпочли бы, чтобы вы сказали, «что» вы хотите загрузить, и пусть .net среда выполнения загружает его оттуда, где он «должен» находиться, в соответствии с его правилами.
http://msdn.microsoft.com/en-us/library/yx7xezcf%28VS.71%29.aspx
Я загрузил «плагины» по отображаемому имени. Почему? Ну, верите вы или нет, но сборки вообще не обязательно должны находиться на диске (или, по крайней мере, не таким образом, чтобы указывать к ним прямой путь). Это может быть невероятно полезно.
Кроме того, «необязательные» сборки, такие как сборки сериализации, обычно Assembly.Load
редактируются по имени.