Я плохо знаком с.NET программирование C#. Я следую немногим книгам. Сказано это вместо того, чтобы компилировать его непосредственно в двоичный код (Собственный код). Код высокого уровня преобразовывается на промежуточный язык (названный MSIL иначе CIL). Но когда я компилирую, я получаю exe/Dll файл.
assembly
. Они используют это "необычное слово" только для дифференциации их из exe/dll файлов, которые содержат двоичный код (собственный код)? .text
PE-файла (переносимый исполняемый файл = * .exe или * .dll). Более подробную информацию можно найти здесь . Если я могу также порекомендовать хорошую книгу по этому вопросу, то это Expert .NET 2.0 IL Assembler от Сержа Лидина. Он парень, который разработал MSIL.
Один из моих любимых способов увидеть IL для фрагмента C # - использовать бесплатный инструмент LINQPad . После ввода некоторого кода и выбора «Операторы C #» вверху (или «Программа C #», в зависимости от того, что подходит), нажмите кнопку «IL» под областью ввода кода, и вы увидите сгенерированный IL.
Использование LINQPad для этого намного удобнее, чем загрузка Visual Studio или запуск компилятора из командной строки, затем загрузка ILDASM и открытие файла .il в текстовом редакторе.
P.S Поскольку вы читаете некоторые книги, я настоятельно рекомендую вам CLR через C # .
По моему опыту, лучший источник знаний, связанных с IL, - это Andrew Troelsen «Pro C # and .NET Platform». Начиная с 3-го издания, у него действительно, действительно выдающаяся глава (около 50 страниц) о том, как понимать IL и даже писать свой собственный код и использовать ILAsm. Я использовал эту информацию, чтобы выяснить, существует ли множественное наследование в мире .NET. Также вы можете попробовать использовать некоторые очень интересные функции в IL (например, фильтрацию исключений, которая существует только в VB, но не в C #).
Я настоятельно рекомендую прочитать эту главу.
В конце концов, .NET Reflector стал корпоративным стандартом для исследования IL-кода сборок, и книга Рихтера определенно "должна прочитать". Но из других книг, подобных упомянутым выше, вы могли бы раскрыть действительно полезные вещи :)
Да, каждая сборка в мире .NET содержит некоторый код IL (вместе с манифестом), который можно просмотреть через Reflector или ILDasm. Более того, Reflector может показать вам код, оптимизированный для C # и VB. Это означает, что любой человек может просмотреть исходный код сборки, поэтому в коммерческих продуктах используются обфускаторы.
Во многих отношениях сборки .NET похожи на пакеты байткода Java.
Я считаю, что они называются "сборками", потому что сборка - это набор модулей, собранных вместе манифестом.
(источник: microsoft.com)
Подробности см. в Содержание сборки.