0

Hallo Ich führe ein VB-Skript mit Skriptsteuerung in C#. Wenn es ein eigenständiges Skript ist, dann funktioniert es gut für mich mit dem folgenden Code.VB Skript mit Referenzskript funktioniert nicht in ScriptControl C#

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

Aber wenn ich versuchte, ein VBScript auszuführen, die Referenz von anderen Skripten enthält dann seine nicht in der Skriptsteuerung ausführt und wirft Fehler. Referenzierung andere Skripte in einem Skript von

! INC Lokale Scripts.Constants-VBScript

Gibt es eine Möglichkeit Referenz Skripte eines Skripts in Skriptsteuerung hinzufügen?

+0

Können Sie klarstellen, was Sie mit "VBScript, das Verweis auf andere Skripts enthält" meinen? Ich bin nicht vertraut mit einem allgemeinen Include-Mechanismus für VBScript. WSH ermöglicht das Laden mehrerer Dateien, aber ich glaube nicht, dass Sie sich darauf beziehen. –

+0

@PeterCooperJr. Um Funktionen anderer Skripte zu verwenden, müssen wir diesen Skriptnamen oben als Referenz angeben. (zB) ! INC Lokale Skripte.Constants-VBScript – Arshad

+0

Ich habe noch nie von "! INC" als VBScript-Befehl gehört. Ich vermute, dass Sie entweder eine andere Technologie verwenden, über die Sie uns nicht informiert haben, oder Sie verwirren VBScript mit einer anderen Sprache, die diese Syntax für Dateieinschlüsse verwendet. VBScript hat keinen Include-Befehl. –

Antwort

2

VBscripts in Enterprise Architect haben einige "Erweiterungen", die problematisch sind, wenn sie über einen generischen Skript-Host ausgeführt werden.

  • Enthält: EA verwendet die Syntax !INC <scriptGroup>.<ScriptName>, um andere Skripts einzuschließen. Dies ist jedoch eine EA-spezifische Syntax, die anderen Skriptdolmetschern nicht bekannt ist. Um dies zu vermeiden, können Sie die Include-Anweisung durch den gesamten Code des enthaltenen Skripts ersetzen.
  • Variable Eingabe: In EA-Skripten können Sie etwas wie Dim myVar as EA.Element schreiben, das ist sehr nützlich im EA-Skript-Editor, weil es Code-Vervollständigung ermöglicht, aber die Syntax ist keinem anderen Skript-Interpreter bekannt. Diese Typdeklaration sollte entfernt werden.
  • Sitzung und Repository: In EA können Sie das Session und Repository Objekt verwenden, ohne es zu definieren. Wenn Sie ein Script mit dem ScriptControl ausführen möchten, müssen Sie diese als Objekt hinzufügen. Für Repository kann diese scriptController.AddObject("Repository", eaRepository);

für ein komplettes Arbeitsbeispiel siehe The Enterprise Architect Add-in Framework auf Github mit getan werden.
Dieser Code liest die Skripts aus dem Modell und den MDGs, kümmert sich um Includes und fügt das Repository-Objekt hinzu.
Es verarbeitet keine Variablen Typisierung und das Session-Objekt.

+0

Danke Mann für die Notiz .Es hat funktioniert – Arshad