|
![]() |
#1 |
Участник
|
AX2012: Как CIL может работать в PROD, если есть ошибки компиляции?
Есть клиент с Ax2012 R3
У них крутится аксапта в продакшн 3 года уже, и ее не трогают. Начались проблемы с перформансом. Дали мне PrePROD. Там попыталась запустить одну функциональность в батч ,и выдалась .net ошибка ( в интеррактиве нет) microsoft. dynamics.ax.xpp.errorException was thrown.. Function XXX incorrectly called. Запустила создание CIL, и комп упал с сообщением "недостаточно памяти". Запустила просто компиляцию, чтобы посмотреть, что происходит c environnement. Она выдала 14 ошибок. Из которых 5 - ссылка на Dll , которой нет в и 9 - связаны с привидегиями и duty . которые сслыдаются на таблицы и меню айтемы, которых в AOT нет. Преимущественно retail и какие-то кастомные разработки. Клиент говорит,что PrePROD несколько месяцев назад восстанавливали из PROD (данные и modelstore) Проверила в PROD , там тоже этих объектов нет! 1) Как так возможно, что объектов нет, но батчи работают в PROD? То есть, в какой-то момент CIl был сгенерирован же , когда приложение в PROD последний раз устанавливали. И потом никто приложение не трогал. Возможно ли, что объекты Security были созданы как-то иначе(скриптом)? Или возможно ли установить патч layer без перегенерации CIL? 2) Если восстановим сейчас копию базы в PrePROD (то есть, modelstore тоже), то все равно на PrePROD нужно будет перегенерировать CIL ? Или можно избежать этого? Мне на данный момент , чтобы время сэкономить, нужно только , чтобы бытчи работали, чтобы мне с основной performance проблемой быстро работать . Разбираться с ошибками компиляции (пропавшими объектами) потом будем. Спасибо за помощь Последний раз редактировалось kitty; 07.04.2025 в 11:06. |
|
![]() |
#2 |
Участник
|
Ну, в общем-то такое не редкость.
Были какие-то объекты (классы, менюитемы, таблички). Были security сущности которые на них ссылались. Объекты удалили или переименовали. Security смотрят в никуда теперь и поэтому при компиляции выдают ошибки. Это не катастрофа. Сборке CIL не мешает. Это же не пакеты а какие-то другие объекты. CIL может собираться успешно даже по приложению которое скомпилировано с ошибками. Там просто в CIL будет вкомпилирован выброс исключения и все. |
|
|
За это сообщение автора поблагодарили: kitty (1). |
![]() |
#3 |
Участник
|
Ого! Спасибо! Век живи - век учись. Всегда корректировали по умолчанию все ошибки на проектах, тк считалось, что иначе CIL не генерировался.
Если на то пошло, то какие ошибки тогда мешают а, какие - нет? Что значит "будет вкомпилирован выброс искоючения" ? |
|
![]() |
#4 |
Участник
|
Цитата:
Цитата:
X++: throw error('Блабла сообщение об ошибке'); Также по логике не должны мешать ошибки в джобах и формах, так как они не влияют на CIL. Но я не проверял. |
|
![]() |
#5 |
Участник
|
Спасибо огромное!
|
|
![]() |
#6 |
Участник
|
Если все работает в PROD и копию базы(то есть, включая modelstore) восстановить в PrePROD, то обязательно ли снова гегерить CIL? Или можно скопировать XppIL.dll и обойтись без повторной компиляции + генерации CIL? (впевдо-код все равно в model store уже есть, то есть, компилировать не обязательно, думаю. А вот с dll не очень понимаю. Наверное, зависит от машины, на которой генеришь) Таким образом можно сэкономить несколько часов и иметь гарантированно рабочее приложение, как в PROD
|
|
Теги |
ax2012 r3 |
|
|