VB 带有参考脚本的脚本在 ScriptControl c# 中不起作用

VB Script with reference script is not working in ScriptControl c#

您好,我正在使用 c# 中的脚本控件执行 VB 脚本。 如果它是一个独立的脚本,那么使用下面的代码对我来说效果很好。

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

但是当我尝试 运行 包含其他脚本引用的 VB 脚本 时,它不会在脚本控件 中执行并抛出错误。 通过

在脚本中引用其他脚本

!INC Local Scripts.Constants-VBScript

有没有办法在脚本控件中添加脚本的引用脚本?

Enterprise Architect 中的 VBscripts 有一些 "extensions" 在通过通用脚本主机执行时会出现问题。

  • 包括:EA 使用语法 !INC <scriptGroup>.<ScriptName> 来包含其他脚本。然而,这是其他脚本解释器不知道的 EA 特定语法。为了避免这种情况,您可以将 include 语句替换为包含脚本的整个代码。
  • 变量类型:在 EA 脚本中,您可以编写类似 Dim myVar as EA.Element 的内容,这在 EA 脚本编辑器中非常有用,因为它允许代码完成,但语法不为任何其他脚本解释器所知。这些类型声明应该被删除。
  • 会话和存储库:在 EA 中,您可以使用会话和存储库 对象而不定义它。如果你想使用 ScriptControl 然后你必须将它们添加为对象。为了 存储库这可以使用 scriptController.AddObject("Repository", eaRepository);

有关完整的工作示例,请参阅 Github 上的 The Enterprise Architect Add-in Framework
此代码从模型和 MDG 中读取脚本,处理包含并添加存储库对象。
它不处理变量类型和 Session 对象。