Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете использовать Ildasm.exe (IL Disassembler) для просмотра сведений об общем промежуточном языке (CIL) в файле. Если проверяемый файл является сборкой, эти сведения могут включать атрибуты сборки и ссылки на другие модули и сборки. Эти сведения могут быть полезны при определении того, является ли файл сборкой или частью сборки, и имеет ли файл ссылки на другие модули или сборки.
Чтобы отобразить содержимое сборки с помощью Ildasm.exe, введите имя< сборки ildasm > в командной строке. Например, следующая команда расчленяет сборкуHello.exe .
ildasm Hello.exe
Чтобы просмотреть сведения о манифесте сборки, дважды щелкните значок Манифест в окне IL Дизассемблера.
Пример
Следующий пример начинается с простой программы "Hello World". После компиляции программы используйте Ildasm.exe , чтобы разобрать сборку Hello.exe и просмотреть манифест сборки.
using System;
class MainApp
{
public static void Main()
{
Console.WriteLine("Hello World using C#!");
}
}
Class MainApp
Public Shared Sub Main()
Console.WriteLine("Hello World using Visual Basic!")
End Sub
End Class
Выполнение команды ildasm.exe в сборке Hello.exe и дважды щелкните значок манифеста в окне дизассемблера IL, в результате этого выводятся следующие выходные данные:
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly Hello
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module Hello.exe
// MVID: {7C2770DB-1594-438D-BAE5-98764C39CCCA}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x00600000
В следующей таблице описана каждая директива в манифесте сборки Hello.exe, используемой в примере.
Директива | Описание |
---|---|
.внешняя сборка <имя сборки> | Указывает другую сборку, содержащую элементы, на которые ссылается текущий модуль (в этом примере mscorlib ). |
Токен publickeytoken <> | Указывает маркер фактического ключа указанной сборки. |
Номер версии .ver <> | Указывает номер версии указанной сборки. |
Имя сборки .assembly <> | Указывает имя сборки. |
Хэш-алгоритм <значение int32> | Указывает используемый хэш-алгоритм. |
Номер версии .ver <> | Указывает номер версии сборки. |
Имя файла модуля .module <> | Указывает имя модулей, составляющих сборку. В этом примере сборка состоит только из одного файла. |
.подсистема <значение> | Указывает среду приложения, необходимую для программы. В этом примере значение 3 указывает, что этот исполняемый файл выполняется из консоли. |
.corflags | Поле метаданных, зарезервированное на данный момент. |
Манифест сборки может содержать несколько различных директив в зависимости от содержимого сборки. Подробный список директив в манифесте сборки см. в документации ecma, особенно "Partition II: Metadata Definition and Semantics" (Определение метаданных и семантика секции III: набор инструкций CIL):
- Стандарты ECMA C# и Общей языковой инфраструктуры
- Стандарт ECMA-335 — Общая языковая инфраструктура (CLI)