По моему опыту, лучшим источником знаний о IL является Эндрю Троелсен «Pro C # и .NET Platform».Начиная с 3-го издания у него есть действительно выдающаяся глава (около 50 страниц) о том, как понимать IL и даже писать свой собственный код и использовать ILAsm.Я использовал эту информацию, чтобы выяснить, существует ли множественное наследование в мире .NET.Также вы можете попробовать использовать некоторые очень интересные функции в IL (например, фильтрация исключений, которая существует только в VB, но не в C #).
Я настоятельно рекомендую прочитать эту главу.
В конце концов .NET Reflector - это корпоративный стандарт для исследования кода сборки IL, и книга Рихтера, безусловно, "должна читать".Но из других упомянутых выше книг вы можете обнаружить действительно полезные вещи:)
Да, каждая сборка в мире .NET содержит некоторый IL-код (вместе с манифестом), который можно просматривать через Reflector или ILDasm.Более того, Reflector может показать вам оптимизированный код на C # и VB.Это означает, что любой человек может просмотреть исходный код сборки, и поэтому в коммерческих продуктах используются обфускаторы.