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

 

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

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

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

-The following custom attribute is added automaf .
.custom instance void [mscorlib] System, Diagnostic:^
.custom instance .custom instance ,custon instance .custom instance .custom instance void ,custom instance void .custom instance void ,custom instance void .custom instance void . custom instance void II// //
. has* algorithm 0x00008004 .ver 1:0:454:30104
.module CacLibrary.dll
Рис. 6.13. Манифест сборки CarLibrary
Нас интересует манифест этой сборки. Чтобы открыть его, щелкните мышью на значке MANIFEST (рис. 6.13).
В первом блоке манифестаперечислены все внешние сборки, необходимые для нормальной работы CarLibrary.dLl. Как мы видим, таких внешних сборок всего две: mscorlib.dll и System.Windows.Forms.dLl. Все внешние сборки помечаются в манифесте тегом [.assembly extern]:
Подробности манифеста Carubrary 279
.assembly extern msec"]lb {
.publ ic^eyf-oker = (B7 7A 5C 56 19 34 EO 89) ve г 1:0:2411:0
extern
і
.publickeytoken = (B7 7A 5C 56 19 34 EO 89) ,ver 1:0:2411:0
}
Как мы видим, в блоках [.assembly extern] присутствуют два выражения: С - pub -lickeytofcen]и [ .ver]. Выражение [ .publickeytoken] встречается только тогда, когда сборка определена для общего пользования (shared assembly). Это выражение используется для ссылки на «сильное ИМЯ» сборки (подробнее про этот МСХЛНіі .M
будет рассказано ниже). [. ver] - это, конечно же, цифровой идентификатор версии.
Кроме списка всех внешних ссылок, в манифесте также определен список всех внутренних модулей, из которых состоит сборка. Внутренние модули манифеста помечаются тегом [ .module]. Поскольку CarLibrary - это однофайловая сборка, то этот тег встречается только один раз.
Для любой сборки можно также определить набор специальных атрибутов (подробнее о них — в главе 7). Эти атрибуты (в качестве примера можно привести атрибуты с информацией об имени компании, торговой марке и прочем) помечаются тегом [.custom]. Поскольку мы эти атрибуты не заполняли, их значения для CarLibrary.dll будут пустыми:
лжяаугі CarLibrary
I
.custom instance void [mscorlib] System.Reflection.AsserablyKeyNameAttribute::.ctor(string> = ( 01 00 00 00 00 )
.custom instance void [mscorlib] System.Reflection.AssemblyKeyFileAttnbute::.ctor(stringl = ( 01 00 00 00 00 )
.custom instance void [mscorlib] System.Reflection.AssemblyDelaySignAttnbute::.ctor(bool) = C 01 00 00 00 00 )
.custom instance void [mscorlib] System.Reflection.AssemblyTrademarkAttribute::.etor(string)= C 01 00 00 00 00 )
.custom instance void [mscorlib] System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 00 00 00 )
.custom Instance void [mscorlib] System.Reflection.AssemblyProductAttribute::.ctor(string) - ( 01 00 00 00 00 )
,custom instance void [mscorlib] System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 00 00 00 )
.custom instance void [mscorlib] System.Reflection.AssemblyConflgurationAttribute:: ctor(string) = C 01 00 00 00 00 )
.custom instance void [mscorlib] System.Reflection.AssemblyDescriptionAttribute::.Ctor(string) = ( 01 00 00 00 00 J
.custom instance void [mscorlib] System,Reflection.AssemblytitleAttribute:: .Ctor(string) = ( 01 00 00 00 00 )
.hash algontm 0x00008004 .ver 1:0:454:30104
}
CarLibrary.dll
Дружественное имя нашей сборки (CarLibrary) помечено тегом [ .assembly]. Тег l[. ver] обозначает версию совместимости для сборки, а тег [. hash] - хэш, сгенери
280 Глава б • Сборки, потоки и домены приложений
рованныйдля файла сборки. Обратите внимание, что для самой сборки CarLibrary тег [,5ubl*cKeytc»cerC не используется, потому что CarLibrary — это частная (private) сборка, а не сборка для общего доступа (shared).
Все теги, используемые в манифесте сборки, представлены в табл. 6.1.
Таблица 6.1. Теги манифеста сборки
Тег Назначение
,.assembly Помечает объявление сборки. Наличие этого тега означает, что этот файл -
сборка .NET
.file Помечает дополнительные теги в той же ассамблее
.class extern Помечает классы, экспортируемые этой сборкой, но объявленные в других
модулях
.exeloc Помечает местонахождение исполняемого файла сборки
„mainfestres Помечает внутренние ресурсы сборки (если таковые имеются). Мы подробнее
познакомимся с этим тегом в главе 9
.module Помечает объявление модуля. Используется для файлов модулей (двоичных
файлов .NET без манифеста)
.module extern Помечает внешние модули — модули данной сборки, на которые есть ссылки
внутри текущего модуля
extern Помечает внешние сборки — сборки, необходимые для нормальной работы
данной сборки
.publickey Содержит открытый ключ
.publickeytoken Содержит маркер открытого ключа
Метаданные и код IL для типов CarLibrary
Как мы помним, главное, что у нас есть в любой сборке, — это типы. Любая сборка хранит в себе метаданные типов (сводную информацию для типов) и собственно код промежуточного языка IL для типов и их членов.
Мы познакомимся с форматом хранения метаданных и кода IL для типов на примере класса ¦: В этом классе определен метод TurboBoosU). Если мы щелкнем на строке с именем этого метода в окне ILDasm.exe, откроется новое окно с инструкциями ІЬдля этого метода (рис. 6.14). Обратите внимание, что сам метод TurboBoostO помечен тегом [.method].
Предыдущая << 1 .. 111 112 113 114 115 116 < 117 > 118 119 120 121 122 123 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100