0

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

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

但是,当我尝试运行包含其他脚本引用的 VBScript 时,它不会在脚本控件中执行并引发错误。通过以下方式引用脚本中的其他脚本

!INC 本地脚本.Constants-VBScript

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

4

1 回答 1

2

Enterprise Architect 中的 VBscripts 有一些“扩展”,当通过通用脚本主机执行它时会出现问题。

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

有关完整的工作示例,请参阅Github 上的 Enterprise Architect 插件框架
此代码从模型和 MDG 中读取脚本,处理包含,并添加 Repository 对象。
它不处理变量类型和 Session 对象。

于 2017-11-29T17:58:19.307 回答