Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 120

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 114 115 116 117 118 119 < 120 > 121 122 123 124 125 126 .. 320 >> Следующая

J Address j'Jj D; \CSharpODoKUabs\Criapi:er ?\C5hflrpCerClient№n№ebuglFc^j ^«Ud j
Folders _xj a
ElD CSharpCarClient j 3 ¦„J Debug В О Foo Ll 111 ?ae» ._______:______,_________-
II¦ IiI .іb Jl ¦

jfypeiАр?вяЄ'оп Extension 6.00 KB J6.00 KB |g My Compute;- _:,
Рис. 6.19. Перемешаем файл частной сборки в подкаталог
Сохраним файл конфигурации и запустим приложение. Если все сделано вильно, то приложение сразу начнет работать.
Чтобы еще раз проверить, что будет в случае проблем с файлом конфигурации, просто переименуем (например, так, как показано на рис. 6.20) и попробуем запустить приложение. Увы... Вывод прост: файл конфигурации приложения должен иметь то же самое имя, что и само приложение плюс расширение *.config.
Ш D:\CShai pBook'.Labf \Chapter b\CSharpCartiieiit',hiii\l)i>iju(j
RIe ?<ft JUw Favorites Iools tietp
+1 Back
Ч
Si I ©Search ^Folders О X =0
Address Jill D^CSharpBook\Labs\Chapter 6lC5harpCarCHent\bln\Delxjg
\3 E
Cr.
CarUbrary.,.. CSharpCar..
NO NO MO csharpcarcHen t.exe.confia
NO MO NO
uharpcartKent.exe.config
CONFIG File
[Type: CWlG FJe Sfee: 222 byte*
jSifcytK !13 My Computer
Рис. 6.20. Файл с расширением должен иметь то же самое имя, что и само приложение
286 Глава б Сборки, потоки и домены приложений
Процесс загрузки частной сборки в целом
Любой ш:юн на загрузку частной сборки может быть как я иным, так и косвенным. Косвенный вызов происходит тогда, когда в тексте приложения встречается ссылка на эту сборку. В коде IL при этом такая внешняя сборка будет помечена тегом
[.assembly extern]:
Il Косвенный вызов на загрузку .assembly extern CarLibrary
I
}
Явный вызов производится программным образом, при помощи метода System. Reflection .Assembly. LoaO(). Подробнее класс Assembly и его методы рассматриваются в главе 7, адля наших целей пока достаточно сказать, что этот метод позволяет указывать имя, версию, «сильное и «культурную -данные о естественном языке, использованном в сборке. все эти параметры сразу приводить вовсе не обязательно. Вызов этого метода может выглядеть, к примеру, следующим образом:
Il Явная загрузка сборки
Assembly asm = Asembly.Load("CarL1brary"J:
Все вместе — имя, версия, «сильное ты* и «культурная пі» называ-
ется ссылкой на сборку (assembly reference, AsmRef). Механизм, который отвечает за обнаружение сборки по AsmRef называется распознавателем сборок (assembly и он входит в структуры среды выполнения
Как уже говорі і.лось, каталог приложения — это всего лишь каталог на жестком диске (например, C:\MyApp), в котором находятся все файлы приложения. Если есть необходимость, в каталоге приложения могут создаваться подкаталоги (например, C:\MyApp\Bin, C:\MyApp\Tools и т. п.). Как правило, подкаталоги создаются, чтобы упорядочить размещение файлов.
Когда поступает запрос на загрузку сборки, среда выполнения передает AsmRef распознавателю сборок. Если распознаватель определяет, что AsmRef относится к частным сборкам (этот вывод делается при отсутствии «сильного имени» для этой сборки в манифесте), то он предпринимает следующие шаги:
1. Пытается обнаружить в каталоге приложения файл конфигурации приложения. В этом файле могут быть указаны дополнительные подкаталоги для поиска в них сборки, а также (как мы увидим дальше) явные указания для применения политики в отношении версии сборки.
2. Если файл конфигурации не обнаружен, распознаватель пытается обнаружить нужную сборку в текущем каталоге приложения. Если файл конфигурации поиск производится и во всех указанных в этом файле подкаталогах.
3. Если сборка не может быть в подкаталоге приложения (и в подкаталогах, определенных для поиск прерывается и генерируется исключение TypeLoddtxcepf; on.
Схема этого процесса представлена на рис. 6.21.
Сборки для общего доступа 287
Ссылка на частную сборку (AsmRef):
* Дружественное имя ' Версия (игнорируется) ' Культурная информация (необязательно)
Запрос на загрузку
-•-И
Среда выполнения .NET
передает AsmRef распознавателю сборок
Начало поиска
Есть ли в каталоге приложения файл конфигурации?
Да!
Сборка найдена в каталоге приложения или в указанных подкаталогах?
Да!
Поиск завершился
успешно!
Нет!
Сборка найдена
в каталоге приложения
Да!
Нет!
Генерируется
исключение
Поиск завершился успешно!
Нет!
Генерируется исключение
Рис. 6.21. Процесс поиска частной сборки
Сборки для общего доступа
Как и частные сборки для общего доступа — это набор типов и необяза-
тельных ресурсов внутри модулей — двоичных файлов сборки. Главное различие между типами сборок заключается в том, что частные сборки предназначены для использования одним приложением (в состав которого они и входят), а сборки для общего доступа — для использования неограниченным количеством приложений на клиентском компьютере.
Как правило, сборки для общего доступа устанавливаются не в каталог приложения, а в специальный каталог, называемый глобальным кэшем сборок (Global Assembly Cache, GAC). Этот каталог расположен в каталоге <имя jHCKa>:\WinNT\ Assembiy(phc.6.22).
Предыдущая << 1 .. 114 115 116 117 118 119 < 120 > 121 122 123 124 125 126 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100