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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.12.2022, 14:50   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,889 / 3165 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от michel1971 Посмотреть сообщение
а как дебажить сессию BC?
Как и любую другую неинтерактивную p-code сессию.

http://web.archive.org/web/200912181...tal-pages.aspx

http://web.archive.org/web/200908080...59(AX.10).aspx

http://web.archive.org/web/201007282...66(AX.10).aspx

https://learn.microsoft.com/en-us/dy...ectedfrom=MSDN

А чего вы все за отладку то уцепились ? Эта технология не для отладки придумана. Пакетный код и так отладить можно, просто вручную запустив или по старинке как в ax4
Старый 28.08.2023, 15:19   #2  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
279 / 839 (28) +++++++
Регистрация: 23.10.2012
Привет.
Изучая Аксапту в поисках решения вопроса с кэшем (Как чистите глобальный кэш АОСов?) увидел библиотеку "Microsoft.Dynamics.AX.Xpp.Support.dll" - очень интересная.
Внутри неё сидит Microsoft.Dynamics.Ax.Xpp.XppObjectBase.
У меня сложилось впечатление, что это "базовая" точка вызова для всех функций.
Например в нём есть вот такая функция:
X++:
public static object StaticCall(string className, string methodName, object[] parameters, Type[] types, object[] varargs)
Но у этой библиотеки есть огромный минус - она в ссылках содержи Ax32Server.

В общем завела меня Аксапта в сторону (вообще другая библиотека)
Microsoft.Dynamics.AX.ManagedInterop.RuntimeContext::get_Current();
У которого есть всякие CallStaticClassMethod и тп.
При запуске которых из пакетного задания система не опознает их как IL код.
Можно предположить, что она считает его XPP.
Но у пакетного задания есть особенность - оно не заполняет в потоке Data - откуда по идее, должна браться сессия.
Поэтому сессию приходится инициализировать руками (это генерирует запись в активных пользователях):
new Microsoft.Dynamics.AX.ManagedInterop.Session() и нужно вызвать logon.
Microsoft.Dynamics.AX.ManagedInterop.Session это наследник от Microsoft.Dynamics.AX.ManagedInterop.RuntimeContext - приводим к родителю и вызываем нужный код.

Исходя из контекста задачи, так понимаю, что речь идёт о "hot swap" - оно кэширует где-то код. Только перезапуск АОСа актуализирует информацию.
В общем не выглядит как финальное решение, но шаг в его направлении.
За это сообщение автора поблагодарили: Logger (20), ivas (3).
Теги
ax2012r3, cil, p-code

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stephenmann: Technical History of Dynamics AX - From Axapta 3.0 to AX2012 Blog bot DAX Blogs 5 03.03.2017 10:22
stoneridgesoftware: TFS Code Repository and Dynamics AX Blog bot DAX Blogs 0 16.06.2016 16:11
X++: When to use Managed Code in Dynamics AX Blog bot DAX Blogs 0 08.12.2011 10:11
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Экспорт / импорт Help topics и запуск второй сессии Аксапты из-под себя DmitrySt DAX: Программирование 0 25.11.2004 00:22

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.