Hi There,
On this post I would like to talk about
a bit more about the CIL and what happens in the
background. Recently I had to go through
a process to find a CIL error I got after deploying a
service. You can read my post solving the error
"The CIL generator found errors and could not
save the new assembly" for more information
on this.
After digging a bit more on the CIL
errors, I started researching on how exactly the Net Module
files are generated under the XppIL
folder and why. In addition, I also was intrigued by the
source files and their relationship to
debugging services and or batch jobs in Visual Studio.
Just for the record, I’m not an expert
on this, and the following information has been taken from
different sources and from my own
experience in the past few hours being “exposed” to the
services virus (it is kind of
addictive).
So, what is CIL? CIL stands for Common Intermediate
Language and
it works together with the
CLI or Common Language Infrastructure, which is basically
a set of rules on programming
languages that will compile with the
CIL. I created a diagram to help me understand this
concept on a visual way.
Please note that I
took the diagram from a book, but I modified it to my own needs
you can see, now we
have the ability to compile P-Code to CIL, and therefore AX 2012 is
able to run X++ code directly into the
CIL, which is much faster the P-Code compiler we had
before.
As you probably know, we have two types
of CIL compilations, the incremental CIL and the full
CIL compilation. The major
difference between the two of them is that the incremental CIL
would compile only the objects that were
modified since the last incremental compilation. For
what I have learned, the full CIL
generation is mandatory when we do modify anything on the
XppIL folder.
On the XppIL folder, I noticed that we
have a bunch of files there. These files are NetModule
type files and they only contain type
metadata and compiled code. It is important not to
confuse a NetModule type file with .NET
assemblies, as these contain and assembly manifest
and managed code.
Now the really interesting portion of
this is that within the XppIL folder there is a folder named
“source”, and within this folder we find
a bunch of files with the .xpp extension, which have x++
source code and are used to debug CIL
code in Visual Studio when working with services and
batches.
Further,
another interesting point to this is that the “existence” of the source folder
is directly
related
to our server configuration when choosing to enable debugging on the server.
No comments:
Post a Comment