Monday, February 16, 2015

AXBuild included with AX2012 R2 CU7 - but does it work for base R2?

AXBuild.exe for Dynamics is a high performance build engine released with AX2012 R2 CU7 Kernel. There are a few ways it speeds up the build, namely through parallelism and by cutting out the overhead of MorphX. This compile tool can make full use of all available CPU cores and it benefits from enterprise class storage systems.

By contrast, builds performed in the MorphX client would benefit most from systems optimized for single threaded operations, ie. no virtualization, solid state disks and high clock speed.

It is theoretically possible to use AXBuild.exe without first upgrading to CU7. I tried it. Even though it works, I can find no documentation stating that it is acceptable to use AXBuild on installations prior to CU7. Therefore, if you do not have CU7, your results may be unsupported if you use the following method.

There are a couple of mentions where AXBuild was used successfully without taking on CU7, after updating the Kernel only:

AXBuild Gotchas:

  • AXBuild takes the place of the AOS service. Therefore, the AOS service should be turned off for the duration of the compile, and MorphX should be closed.
  • Using the altbin parameter will correctly locate the client\bin binaries and avoid runtime errors.
  • If your server\bin folder has not been well maintained, you may uncover third party components which are out of date, previously unmentioned by MorphX. These should be corrected anyway.
  • Hot-swapping must be turned off in the AOS configuration.
  • The compile log files are not stored in the user profile by default. Instead, they are are stored in: C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\Log\
  • AXBuild should be executed with administrative credentials.
  • .NET Objects Cannot be Instantiated while the compile is running. This matters if you have customized a few key foundation classes to perform .NET calls, namely Application, Infolog, and ClassFactory. See section F: https://msdn.microsoft.com/en-us/library/dn528954.aspx
  • AXBuild does not support chained COM calls. See below.
  • The documentation for AXBuild alludes to differences in the Modelstore schema. In my experience, the compile completed successfully on AX2012 R2 without updating the schema, so I am not sure that this applies. For CU7 where the tool was introduced, it certainly applies. In that case, care must be taken to also update the schema on deployment environments, or the new Modelstore will fail to import.
  • Full CIL generation remains as a separate step which is not covered by AXBuild.

 

Fix for AX2012 R2 base install - errors in foundation class SysInetHTMLEditor


For the AX2012 R2 base install, I encountered two errors:
Description    Path    Line    Method/Property name    Diagnostic ID   
1. The variable is not of the type CLASS.    \Forms\SysInetHTMLEditor\Methods\saveChanges    21    \Forms    Err:74   
2. The variable is not of the type CLASS.    \Forms\SysInetHTMLEditor\Methods\saveDocument    25    \Forms    Err:74   

For an explanation, see Section F, constraints:
https://msdn.microsoft.com/en-us/library/dn528954.aspx


Here are the errors after loading AxCompileAll.html into MorphX:


This was easily solvable by first declaring a variable of type COM to avoid the chaining call:





No comments:

Post a Comment