Definition - What does Abstract IL mean?
Abstract IL (Intermediate Language) is a software development Kit (SDK) consisting of libraries, documentation and other development tools that can be used to manipulate the contents of .NET framework and binary files at a high level.
Abstract IL can be used in the code written in any .Net language like C#, F#, etc. Its main purpose is to read and modify the binaries from code written in high-level language, the details of which otherwise would be more cumbersome to access in binary format. It has also been used for the following:
- As a compiling tool for code written in F#
- For performing static analysis of checking code related to code access security, and for aspect oriented programming projects.
- A tool for developing MS-ILX programs containing code written in functional programming languages.
Techopedia explains Abstract IL
The concept of Abstract IL is the result of the efforts of the Programming Principles and Tools group of Microsoft Research to build a tool that can analyze, manipulate and transform .NET framework executables. With this feature, a wide range of applications can be developed to enhance security, error detection, dynamic security checks and IL optimization/profiling tools.
The requirement for using the Abstract IL SDK for development purposes is to have the .NET framework SDK along with an F# compiler, since F# is generally considered to be the best tool for writing managed code (using IL) compared to other .NET languages. For deployment of .NET programs based on the Abstract IDL libraries, a copy of .NET Runtime Redistributable needs to be provided. Also, use of Abstract IL avoids the dependency of having ilasm.exe/ildasm.exe in the path since it takes care of reading/writing binary data.
The other terminology commonly used in connection with Abstract IL in .NET is the Common IL. Common IL is the human-readable version of the code written in .NET that can be executed in an environment supporting Common Language Infrastructure (CLI), which helps in eliminating the dependency on platform or CPU type.
Common IL is aimed at generating code that eliminates the need to distribute separate binaries for different platform and CPU types, along with improved security and reliability features. However, Abstract IL is intended for better access to the .NET binary files.