web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics AX (Archived)

Why running full CIL generation is necessary after deleting XpiLL folder ?

(0) ShareShare
ReportReport
Posted on by 160

Hello,

often I have managed to resolve one of those weird runtime errors simply generating full CIL.

As many of you experts advice, this operation is always accompanied by renaming/delitng the XpiLL folder.

What I don't get is the following:

I am aware the compiled code comes with the modelstore, and as best practice when releasing a modelstore in a Production environment only a full Data Dictionary Synchronization is required.

SO why do you need to run full CIL after deleting a folder in a Production environment where you suppose to overwrite objects when moving a modelstore into it ?

Sorry if I have been unclear, but actually my doubt is all in the Subject :)

*This post is locked for comments

I have the same question (0)
  • Daniele.Selvi Profile Picture
    160 on at

    Apologies, I clearly meant "XppIL"

  • Suggested answer
    Mea_ Profile Picture
    60,284 on at

    Hi Kathree,

    Personally I have deleted XppIL folder only couple of times and only to troubleshoot some issues.

    It was never a part of deployment process and is not a recommended way to do it. Full CIL generation should be enough.

    And yes you are right CIL is a part of model store so when you do model store deployment you need to do only DB sync.

    To get some recommendations around deployments and moving code between environment you can read this white paper

    www.microsoft.com/.../confirmation.aspx as you will see it says nothing about XppIL folder.

  • Suggested answer
    Vilmos Kintera Profile Picture
    46,149 on at

    First of all, the XPPIL folder is only generated if you have server-side debugging enabled, see the documentation:

    msdn.microsoft.com/.../gg860898.aspx

    This is a horrible idea. You should consider capturing a server-side trace in case of an issue, rather than debugging Production.

    You should disable Global Breakpoints and Server-side debugging on all your Production AX AOS instances, since that can be a resource bottleneck up to 20%. Your XPPIL problem is then resolved for good.

  • Martin Dráb Profile Picture
    237,880 Most Valuable Professional on at

    CIL code (.dll and .netmodules files in XppIL folder) is clearly needed for CIL code execution, even without debugging. For instance, batch jobs and services are always executed in CIL, so they need their CIL code.

    If you enable debugging, the CIL generation process generates extra information for debugging, namely symbol files (.pdb) and source code files (.xpp) referred to by symbol files.

  • Daniele.Selvi Profile Picture
    160 on at

    Thanks guys, but nobody really answered my original question:

    If I delete the XppIL folder, without generating full CIL, is the folder going to be fully and correctly regenerated?

    If instead I run full CIL without deleting the XppIL folder, are the DLL going to be fully deleted and created again?

  • Verified answer
    Martin Dráb Profile Picture
    237,880 Most Valuable Professional on at

    If you delete the folder and starts the AOS. the files will be deployed from what's stored in XppAssembly table. I can't say whether it's what you mean by "fully and correctly regenerated".

    If you run full CIL compilation, it should create a new assembly and rewrite files. Deleting the folder shouldn't be ever needed, but it doesn't always seem to be the case.

  • Verified answer
    Vilmos Kintera Profile Picture
    46,149 on at

    You get 2 pieces of information by default:

    - Application / netmodule library (as mentioned by Martin)

    - AIF service package

    When you start your AX AOS instance, those files will be regenerated from the mentioned XppAssembly, ModelElement* and AIF* tables.

    If you have debugging on, additionally you get a couple of XML files, and an XPP file for every method containing the source code.

    When you generate full CIL, it will refresh the XppAssembly table, then regenerate the files and redeploy the AIF ports.

    If you have any problems with these, that means your release process is wrong. You should be releasing code using AX ModelStore, and in the source environment if you fully compile p-code and IL, that would carry it over and only DB synchronization (and sometimes SQLDictionary ID cleanup) would be required indeed.

    During the release you must stop all AX AOS instances while the modelstore is getting applied, and should only operate 1 AX AOS instance for maintenance purposes after that. Once you have done the maintenance steps restart that one too, and fire up other AX instances.

    I have noticed that in some cases the VSAssemblies folder next to XPPIL is not getting populated, in that case that AOS instance needs to be restarted. The other issue which might happen is that the AIF ports do not successfully come up on 1 instance, you have to restart that AOS again until it is fine.

    No need to trigger any CIL in Production, making your release process longer!

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics AX (Archived)

#1
Martin Dráb Profile Picture

Martin Dráb 4 Most Valuable Professional

#1
Priya_K Profile Picture

Priya_K 4

#3
MyDynamicsNAV Profile Picture

MyDynamicsNAV 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans