Стартовая страница › Форумы › Разработка и интеграция › Компиляция скриптов
- В этой теме 6 ответов, 2 участника, последнее обновление 10 месяцев, 2 недели назад сделано
manjey73.
-
АвторСообщения
-
23.01.2025 в 21:16 #36479
manjey73УчастникЧто-то я в ступоре. А где в коде найти как компилируются скрипты при запуске Сервера ?
23.01.2025 в 22:05 #36480
manjey73УчастникПытаюсь понять код Calculator.
Вопрос на засыпку: Например я в скриптах добавил некий скрипт, или даже class.
При запуске сервера все проходит компиляцию для проверки. Но если данный скрипт или класс не используется в скриптах каналов, то это будет выброшено из памяти после старта Сервера ?24.01.2025 в 12:59 #36489
MikhailМодераторНа основе формул каналов и таблицы Скрипты формируется исходный код, который можно увидеть в файле Log\CalcEngine.cs
Затем он компилируется в памяти и используется при расчёте значений каналов и команд.
Если формула не используется, она всё равно компилируется и находится в памяти. Было бы полезно в будущем добавить поле «Включено» в таблицу Скрипты, чтобы отключать лишние формулы.24.01.2025 в 13:14 #36490
manjey73УчастникВопрос как достучаться до памяти, где скомпилированы формулы и создавать на их основе экземпляры?
не первый раз пытаюсь найти где оно лежит из модуля.
Я в скрипты добавляю свой класс и хочу его увидеть, чтобы увидеть его поля и т.д. А так же создать его экземпляр.
27.01.2025 в 15:12 #36504
MikhailМодераторИз модулей нет доступа к экземпляру класса Calculator. Наверное нужно скомпилировать его из своего модуля.
27.01.2025 в 16:14 #36510
manjey73Участникну как бы к Calculator доступ есть, но только к тому, что уже откомпилирован и находится в библиотеке.
А вот к тому, что он компилирует, похоже доступа нет, так как оно компилируется в памяти, как вы говорите.Method get_Context Method get_Timestamp Method get_IsCurrent Method get_CnlNum Method get_Channel Method get_ArrIdx Method get_Cnl Method get_CnlVal Method get_CnlStat Method get_CnlData Method get_Cmd Method get_CmdVal Method get_CmdData Method get_CmdDataStr Method InitScripts Method FinalizeScripts Method BeginCalculation Method EndCalculation Method BeginCalcCnlData Method EndCalcCnlData Method BeginCalcCmdData Method EndCalcCmdData Method N Method Val Method Val Method SetVal Method Stat Method Stat Method SetStat Method Data Method Data Method SetData Method SetData Method NewData Method PrevVal Method PrevVal Method PrevStat Method PrevStat Method PrevData Method PrevData Method Time Method Time Method PrevTime Method PrevTime Method Deriv Method GetType Method ToString Method Equals Method GetHashCodeНе помню, это он или нет. В общем можно добраться до CalcEngine, Manager и Calculator — но к чистым, которые загружены в AppDomain
А вот к Assembly, который в памяти после компиляции Сервером хз как добираться.
Тут то и полагаю, что никак, а очень бы хотелось. Учитывая, что Модули стартуют после того, как Сервер скомпилирует исходники.27.01.2025 в 16:19 #36511
manjey73УчастникНу да, это методы Calculator — InitScripts, FinalizeScripts
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.