В Microsoft Dynamics AX код может быть откомпилирован в CIL и запущен в .NET CLR.
Разберемся по порядку что это значит.
Компиляция – интерпретация исходного кода в машинноисполняемый формат, который может быть исполнен на сервере или клиенте.
CIL (Common Intermediate Language) – единый переходный язык, работающий совместно с CLI (Common Language Infrastructure) – многоязыковой инфраструктурой, базирующейся на наборе правил языков программирования, которые компилируются в CIL. Одним из самых важных свойств CIL является набор инструкций, не зависящих от платформы и ЦП, что позволяет выполнять код в разных средах.
На рисунке ниже показано, как языки первично компилируются в CIL после чего CLR (многоязыковая среда выполнения) компилирует платформонезависимый код CIL в код, читаемый машиной:
Многоязыковая среда выполнения (CLR – Common Language Runtime) понимает CIL и знает как выполнять этот код. CLR не нужно понимать все языки (C#, VB или F#), ей достаточно знать только один язык, т.к. все они преобразуются в CIL.
Microsoft Dynamics AX может преобразовывать откомпилированный X++ код в код CIL, соответственно, может запускать код X++ в CIL. Необходимо не забывать про CIL при разработке, т.к. код, запускаемый на сервере, такой как пакетные задания и службы, будет запускаться в CIL и, соответственно, такой код X++ нужно предварительно откомпилировать в CIL.
Т.к. компиляция в CIL требует времени, то она не выполняется автоматически при компиляции X++. Необходимо выполнять ее вручную при изменении кода, используя кнопки компиляции на рабочем интерфейсе разработчика.
Можно запустить полную или инкрементную CIL-компиляцию. Основная разница между ними в том, что инкрементная компиляция выполняется только для объектов, измененных со времени последней компиляции, а полная компиляция выполняется для всех объектов. Инкрементная компиляция выполняется быстрее, чем полная, но необходимо понимать, что не всегда достаточно инкрементной компиляции.
Итак, CIL-компиляция выполнена. Но что изменилось и где можно найти результаты этого процесса? Ответ на этот вопрос можно найти в папке bin на сервере. По умолчанию она находится здесь: %ProgramFiles%\Microsoft Dynamics AX\60\Server\<Server Name>\bin\XppIL.
В этой папке можно найти итоговый файл сборки Dynamics.Ax.Application.dll вместе со списком файлов *.NetModule. Файлы *.NetModule отличаются от сборок .Net, - они не содержат манифеста сборки. Файлы *.NetModule содержат только типовые метаданные и откомпилированный код. Также в этой папке можно найти файлы с разрешением .xpp - эти файлы содержат исходный X++ код и могут использоваться при отладке кода X++ в Visual Studio, таким образом редактор и отладчик могут показывать актуальный исходный код.
Примечание: если установлено несколько экземпляров AOS, то необходимо остановить все экземпляры, и затем перезапустить их. Это необходимо для того, чтобы экземпляры AOS загрузили обновленную сборку.
ПС: если в материале есть какие-либо неточности, то прошу поправить в личном сообщении или в комментарии.
Happy DAXing!
Комментариев нет:
Отправить комментарий