Компиляция скриптов

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Сообщения
  • #36479
    manjey73
    Участник

    Что-то я в ступоре. А где в коде найти как компилируются скрипты при запуске Сервера ?

    #36480
    manjey73
    Участник

    Пытаюсь понять код Calculator.

    Вопрос на засыпку: Например я в скриптах добавил некий скрипт, или даже class.
    При запуске сервера все проходит компиляцию для проверки. Но если данный скрипт или класс не используется в скриптах каналов, то это будет выброшено из памяти после старта Сервера ?

    #36489
    Mikhail
    Модератор

    На основе формул каналов и таблицы Скрипты формируется исходный код, который можно увидеть в файле Log\CalcEngine.cs
    Затем он компилируется в памяти и используется при расчёте значений каналов и команд.
    Если формула не используется, она всё равно компилируется и находится в памяти. Было бы полезно в будущем добавить поле «Включено» в таблицу Скрипты, чтобы отключать лишние формулы.

    #36490
    manjey73
    Участник

    Вопрос как достучаться до памяти, где скомпилированы формулы и создавать на их основе экземпляры?

    не первый раз пытаюсь найти где оно лежит из модуля.

    Я в скрипты добавляю свой класс и хочу его увидеть, чтобы увидеть его поля и т.д. А так же создать его экземпляр.

    #36504
    Mikhail
    Модератор

    Из модулей нет доступа к экземпляру класса Calculator. Наверное нужно скомпилировать его из своего модуля.

    #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, который в памяти после компиляции Сервером хз как добираться.
    Тут то и полагаю, что никак, а очень бы хотелось. Учитывая, что Модули стартуют после того, как Сервер скомпилирует исходники.

    #36511
    manjey73
    Участник

    Ну да, это методы Calculator — InitScripts, FinalizeScripts

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Вы должны авторизироваться для ответа в этой теме.