Скрипт VB со ссылочным скриптом не работает в ScriptControl C#

Привет я выполняю сценарий VB, используя управление сценарием в C#. Если это автономный скрипт, то он отлично работает для меня, используя приведенный ниже код.

            ScriptControl SC = new ScriptControl();
            SC.Language = ScriptType;
            SC.AddObject("Repository", RP);
            SC.AddCode(scriptcontents);
            Object[] runobject = { };
            string result = SC.Run(ScriptName, runobject);

Но когда я попытался запустить VBScript, который содержит ссылку на другие сценарии, он не выполняется в элементе управления сценарием и выдает ошибку. Ссылки на другие скрипты в скрипте

!INC Local Scripts.Constants-VBScript

Есть ли способ добавить справочные скрипты скрипта в управление скриптом?

1 ответ

Решение

Скрипты VB в Enterprise Architect имеют несколько "расширений", которые проблематичны при его выполнении через универсальный хост скриптов.

  • Включает в себя: EA использует синтаксис !INC <scriptGroup>.<ScriptName> включить другие скрипты. Однако это специфический для EA синтаксис, который не известен другим интерпретаторам сценариев. Во избежание этого вы можете заменить оператор включения на весь код включенного скрипта.
  • Переменная типа: в скриптах EA вы можете написать что-то вроде Dim myVar as EA.Element это очень полезно в редакторе сценариев EA, поскольку позволяет выполнять завершение кода, но синтаксис не известен ни одному другому интерпретатору сценариев. Эти объявления типа должны быть удалены.
  • Session and Repository: в EA вы можете использовать объект Session and Repository, не определяя его. Если вы хотите выполнить скрипт, используя ScriptControl, вам придется добавить его в качестве объекта. Для репозитория это можно сделать с помощью scriptController.AddObject("Repository", eaRepository);

Полный рабочий пример см. В разделе Надстройка Enterprise Architect на Github.
Этот код считывает скрипты из модели и MDG, заботится о включениях и добавляет объект Repository.
Он не обрабатывает типизацию переменных и объект Session.

Другие вопросы по тегам