AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2025, 10:06   #1  
kitty is offline
kitty
Участник
 
383 / 30 (2) +++
Регистрация: 24.05.2005
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.
Старый 07.04.2025, 12:41   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Ну, в общем-то такое не редкость.
Были какие-то объекты (классы, менюитемы, таблички). Были security сущности которые на них ссылались. Объекты удалили или переименовали. Security смотрят в никуда теперь и поэтому при компиляции выдают ошибки. Это не катастрофа. Сборке CIL не мешает. Это же не пакеты а какие-то другие объекты.

CIL может собираться успешно даже по приложению которое скомпилировано с ошибками. Там просто в CIL будет вкомпилирован выброс исключения и все.
За это сообщение автора поблагодарили: kitty (1).
Старый 07.04.2025, 13:20   #3  
kitty is offline
kitty
Участник
 
383 / 30 (2) +++
Регистрация: 24.05.2005
Ого! Спасибо! Век живи - век учись. Всегда корректировали по умолчанию все ошибки на проектах, тк считалось, что иначе CIL не генерировался.

Если на то пошло, то какие ошибки тогда мешают а, какие - нет?
Что значит "будет вкомпилирован выброс искоючения" ?
Старый 07.04.2025, 15:47   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от kitty Посмотреть сообщение
Ого! Спасибо! Век живи - век учись. Всегда корректировали по умолчанию все ошибки на проектах, тк считалось, что иначе CIL не генерировался.
Долгое время так и было. Но начиная с одной из версий сделали оптимизацию, так что если какой-то метод не компилируется, то ЦИЛ все равно собирается, но в код этого метода ставится выброс исключения. В R3 точно уже должно быть так.

Цитата:
Сообщение от kitty Посмотреть сообщение
Если на то пошло, то какие ошибки тогда мешают а, какие - нет?
Что значит "будет вкомпилирован выброс искоючения" ?
Ну вместо кода соответствующего тому, что написано на X++ там будет стоять эквивалент
X++:
throw error('Блабла сообщение об ошибке');
Ну ошибки в правах доступа не мешают, так как сборка CIL не использует эти объекты.
Также по логике не должны мешать ошибки в джобах и формах, так как они не влияют на CIL. Но я не проверял.
Старый 08.04.2025, 09:34   #5  
kitty is offline
kitty
Участник
 
383 / 30 (2) +++
Регистрация: 24.05.2005
Спасибо огромное!
Старый 09.04.2025, 23:43   #6  
kitty is offline
kitty
Участник
 
383 / 30 (2) +++
Регистрация: 24.05.2005
Если все работает в PROD и копию базы(то есть, включая modelstore) восстановить в PrePROD, то обязательно ли снова гегерить CIL? Или можно скопировать XppIL.dll и обойтись без повторной компиляции + генерации CIL? (впевдо-код все равно в model store уже есть, то есть, компилировать не обязательно, думаю. А вот с dll не очень понимаю. Наверное, зависит от машины, на которой генеришь) Таким образом можно сэкономить несколько часов и иметь гарантированно рабочее приложение, как в PROD
Теги
ax2012 r3

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Почему может не работать Exception внутри транзакции axm2017 DAX: Программирование 3 27.03.2023 11:29
ax7: есть ли способ сделать так, чтобы в VS ошибки не пропадали при сохранении файла? mazzy DAX: Программирование 6 18.10.2017 10:41
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
X++: X++ Function num2Str: Difference in .NET CIL Mode Blog bot DAX Blogs 0 09.03.2012 07:45
Может ли Axapta3.0 работать под MSSQL SERVER 2005 grishan DAX: Администрирование 3 12.03.2006 18:08
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:29.