Inhaltsverzeichnis

TAA Support Package für Visual Studio

Die TAA-spezifische Erweiterung für Visual Studio bietet Unterstützung für die Bearbeitung und den Test der Implementierung von TAA-Modulen auf Basis von mit ExpEdge erzeugten Assemblies.

Die hier beschriebene Funktionalität steht nur zur Verfügung, wenn eine Source-Datei bearbeitet wird, die ein TAA-Modul in C# auf Basis einer ExpEdge-erzeugten Assembly implementiert.

Allgemein

Wenn das Package installiert ist, enthält Visual Studio einen Eintrag „TAA“ in der Menüleiste (bis VS2017) oder unterhalb des Menüs „Extensions“ (ab VS2019). Unterhalb dieses Eintrags werden Funktionen angeboten, um die Implementierung von Modulen zu unterstützen:

Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird der Name des Objekts, auf das sich der Menüeintrag bezieht, im Menüeintrag angezeigt, sofern er aus dem aktuellen Kontext abgeleitet werden kann. Funktionen, für die ein Kontext zwingend erforderlich ist, sind deaktiviert, wenn kein Kontext ermittelt werden kann.

Diese Menüeintrage werden nachfolgend beschrieben.

Testen eines TAA-Moduls

Modul starten

Menu-Eintrag: Modul starten …
Tastatur-Shortcut: Shift+Alt+F5
Diese Funktion startet in einem separaten Prozess tstDo mit den Argumenten zur Ausführung des Moduls, in dessen Implementierung sich der Cursor aktuell befindet.

Wenn erkennbar ist, dass sich der Cursor in einer Methode befindet, die eine bestimmte Operation implementiert, wird diese Operation in den Modulaufruf mit aufgenommen.

Die Argumente können über den angezeigten Dialog ergänzt werden:

Die Argumente, die für einen Modulaufruf angegeben werden, werden - ggf. pro Operation - intern gespeichert und stehen wieder zur Verfügung, wenn dasselbe Modul auf diesem Weg erneut ausgeführt werden soll.

Als Implementierungstyp wird - abhängig von den Projekteigenschaften - „dllClr“ oder „exeClr“ angegeben, die Ispc-Angabe verwendet den Namen der in dem aktuellen Projekt erzeugten Assembly.

Angaben in dem Dialog:

Nähere Information zu den Aufrufoptionen, z.B. bzgl. Aufzeichnung und Schnittstelle, finden Sie in der Syntaxbeschreibung von tstDo.

Beispiel: Die aus dem o.g. Dialog erstellte tstdo-Anweisung:

start TWONLY EFUN PG-NFUN-ROLETEST LOESCHEN  
-ityp: DllClr -ispc: "D:\WORK\test\TestCS\TestCS\bin\TestCS.DLL;TestCS.MyPgNfunRoletest;Execute" 
save=D:\WORK\test\tmi\PG-NFUN-ROLETEST_LOESCHEN.tmi 
-m PGNFUNROLETEST -im1 -z0 
-preview 1 -postview 0

Ntry-Modul starten

Auch Einstiegsbausteine können über die zuvor beschriebene Funktionalität gestartet werden, allerdings können hier keine Optionen (wie Aufzeichnung, Config-Unit, Timestampoffset, Preview usw.) übergeben werden, da TAA vor dem Start des Moduls nicht aktiv ist.

Einige dieser Angaben können aber als Property an dem Ntry-Modul gesetzt werden; die fehlende Möglichkeit für Preview und Postview kann in der Testphase durch ShowModule ersetzt werden:

	class MyNtry2 : Ntry2
	{
		public MyNtry2()
		{
			this.Recording = "NtryAufzeichnung2";
			this.TimestampOffset = "0002-00-00-00.00.00.000000";
			this.Title = "Einstieg mit Ntry2";
			this.ConfigUnit = "tw_903";
		}
		protected override void RunImplementation()
		{
			this.Services.Debug.ShowModule();
			MessageBox.Show("Hello World!");
		}
	}

Modulausführungen vergleichen

Dieser Befehl ermöglicht es, die Ausführung der aktuellen Implementierung eines Moduls mit einer aufgezeichneten Ausführung zu vergleichen2).

Der Befehl steht nur zur Verfügung, wenn eine Operation ausgewählt ist.

Der „Start“-Knopf startet die Ausführung, wobei zunächst über tstDo das Modul in der aktuellen Implementierung ausgeführt wird, basierend auf der angegebenen Aufzeichnung. Wenn mehrere Instanzen verglichen werden sollen, geschieht die Ausführung in einem einzigen tstDo-Befehl mit Multithreading.

Anschließend wird pro Modulinstanz über tstDiff.exe ein Vergleichsprotokoll erstellt und ggf. angezeigt.

Da dies u.U. länger dauert, wird der Fortschritt in einem Fortschrittsdialog angezeigt; dort kann der Vorhang auch abgebrochen werden:

Debug-Einstellungen für Modul

Debug-Einstellungen für Modul aktiv/aktivieren

Der Menü-Eintrag Debug-Einstellungen für <Modul> aktivieren… zeigt an, ob in der Registry für dieses Modul Debug-Einstellungen vorhanden sind. Wenn der Eintrag angehakt ist, also Einstellungen vorhanden sind, bewirkt ein Klick auf den Menüeintrag, dass ein Dialog geöffnet wird, in diesem die Debug-Einstellungen in der Registry deaktiviert / aktiviert und DebugBreak gesetzt werden können.

Wenn in der Registry noch keine Debug-Einstellungen für das Modul existieren, bewirkt das Aktivieren (ohne DebugBreak), dass Debug-Einstellungen für den Implementierungstyp „VsNet“ erzeugt werden. Damit können die Module unter Kontrolle von Visual Studio ausgeführt werden.

Wenn DebugBreak ausgewählt ist, werden Ityp und Ispc gelöscht und nur DebugBreak auf 1 gesetzt.

Wenn die aktivierten Debug-Einstellungen den Ityp „VsNet“ haben, werden im aktuellen Projekt StartProgram und StartArguments bestückt.

VSNet-Debugging für <Modul> Aktiv… – öffnet besagten Dialog. Bei Deaktiveren werden die Werte für Ityp, Ispc und DebugBreak entfernt. Außerdem werden im aktuellen Projekt die Inhalte von StartProgram und StartArguments geleert, sofern dort Debug-Angaben für das aktuelle Modul stehen.

Debug-Einstellungen für Modul anpassen

Menu-Eintrag: TAA Tools → Debugeinstellungen [<Name>] anpassen…

Dieser Befehl startet das Tool „TwkEdge“, mit dem Sie die Debug-Angaben bearbeiten können.

Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird TwkEdge gestartet und werden die Einstellungen für dieses Modul geladen; der Name des Moduls zu der aktuellen Klasse wird im Menu-Eintrag angezeigt.

Kann kein aktueller Kontext ermittelt werden, wird TwkEdge ohne Angabe eines Moduls gestartet.

ModuleUnitTest starten

Dieser Befehl ermöglicht es, die mit der Testunterstützung attributierten Methoden der aktuellen Implementierung eines Moduls auszuführen3).

TAA Explorer Starten

Menu-Eintrag: TAA Tools → TAA Explorer Starten…

Dieser Befehl startet das Tool „TaaExplorer“, mit den gleichen Berechtigungen wie das Visual Studio, von dem es aufgerufen wurde.

Bearbeiten von TAA-Bausteinen

Bearbeiten der Schnittstelle eines TAA-Moduls

Menu-Eintrag: TAA Tools → Modulschnittstelle [<Name>] bearbeiten …

Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird TeamWiSE.InterfEdge gestartet und dieses Modul dort angezeigt; der Name des Moduls zu der aktuellen Klasse wird im Menu-Eintrag angezeigt.

Kann kein aktueller Kontext ermittelt werden, wird InterfEdge gestartet, ohne dass ein Modul geladen wird.

Sie können in InterfEdge wie gewohnt arbeiten, d.h. auch andere Module laden und - falls Sie Schreibberechtigung für das betreffende Modul haben - Änderungen vornehmen.

Wenn sie von Visual Studio aus für mehrere Module „Modulschnittstelle <name> bearbeiten…“ auswählen, werden diese in derselben Instanz von InterfEdge hinzugefügt.

Transformation für Modul starten

Menu-Eintrag: Transformation für Modul starten…4)
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird für dieses Modul KonfigDialog gestartet.

Das Verhalten ist so wie auch in InterfEdge usw.: Nach Ausführung der Transformation über Konfig-Dialog erscheint eine Meldungsbox mit dem Namen der Datei, in der das Transformationslog zu finden ist, und der Möglichkeit, diese Datei direkt anzuzeigen.

Transformation für BasisAssembly starten

Menu-Eintrag: Transformation für BasisAssembly starten…5)
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, und die Basis-Assembly unter Angabe einer DV-Komponente erstellt wurde, wird für die diese DV_Komponente die KonfigDialog gestartet.

Das Verhalten ist so wie auch z.B. von Rochade aus: Nach Ausführung der Transformation über Konfig-Dialog erscheint eine Meldungsbox mit dem Namen der Datei, in der das Transformationslog zu finden ist, und der Möglichkeit, diese Datei direkt anzuzeigen.

Bearbeiten einer Datenstruktur

Menu-Eintrag: Datenstruktur bearbeiten …
Dieser Menüeintrag startet das Tool „DataStrEdge“.

Bearbeiten einer Schlüsseltabelle

Menu-Eintrag: Schlüsseltabelle bearbeiten …
Dieser Menüeintrag startet das Tool „TablEdge“.

Bearbeiten einer Meldungsgruppe

Menu-Eintrag: Schlüsseltabelle bearbeiten …
Dieser Menüeintrag startet das Tool „MessEdge“.

Modul in Rochade bearbeiten

Menu-Eintrag: Rochade → Modul bearbeiten …
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird Rochade Autopilot gestartet und dieses Modul dort angezeigt.

Leider ist es nicht möglich, in einer bereits laufenden Autopilot-Instanz zu einem Modul zu verzweigen. Deshalb wird für diesen Befehl jedesmal eine neue Autopilot-Instanz gestartet.

DV_Komponente in Rochade bearbeiten

Menu-Eintrag: Rochade → DV_Komponente bearbeiten …
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, und die Basis-Assembly unter Angabe einer DV-Komponente erstellt wurde, wird Rochade Autopilot gestartet und diese DV_Komponente dort angezeigt.

Leider ist es nicht möglich, in einer bereits laufenden Autopilot-Instanz zu einem Modul zu verzweigen. Deshalb wird für diesen Befehl jedesmal eine neue Autopilot-Instanz gestartet.

Datenstruktur in Rochade bearbeiten

Menu-Eintrag: Rochade → Datenstruktur bearbeiten …
Diese Funktionalität ist noch nicht implementiert.

Schlüsseltabelle in Rochade bearbeiten

Menu-Eintrag: Rochade → Schlüsseltabelle bearbeiten …
Diese Funktionalität ist noch nicht implementiert.

Meldungsgruppe in Rochade bearbeiten

Menu-Eintrag: Rochade → Meldungsgruppe bearbeiten …
Diese Funktionalität ist noch nicht implementiert.

Aktualisierung des TAA Support Package

Ab TAA-Version 9.09/TaaVSPackEdge-Version 2.10 wird das von Microsoft in Visual Studio zur Verfügung gestellte Update-Verfahren für Extensions verwendet. Das bedeutet, dass Updates automatisch installiert werden, wenn „Automatically update this Extension“ angekreuzt ist.

Wenn für das Package ein neuer Stand zur Verfügung gestellt wird, stellt Visual Studio dies beim Starten (anhand der Versionsnummer) fest und zeigt dies durch eine Meldung an:

Bestätigen Sie diese Meldung mit OK, um den aktuellen Stand zu installierten. Damit dieser aktiv wird, müssen Sie danach Visual Studio beenden und neu starten.

Auffinden der Version

Wenn in dem sog. „About“-Box von Visual Studio6) nachgeschaut wird, sieht man nur die Hauptversion des Pakets:

Schaut man stattdessen bei den installierten Extensions nach7), sieht man die tatsächliche Build-Version:

Registry-Einträge

Um Module, Datenstrukturen usw. in Rochade Autopilot anzuzeigen, wird zum Starten von Autopilot der Pfad der ausführbaren Datei sowie eine INI-Datei benötigt. Diese können über die Company-Settings RoAutopilot, RoAutopilotSection und RoAutopilotIniFile angegeben werden.

Um im Fehlerfall mehr Informationen von TaaVsPackEdge zu erhalten, kann unter Tools TAAVsPackEdge, das Verbosity-Level gesetzt werden. Die Informationen werden dann in %Temp%TaaVsPackEdgelog.xml geschrieben 8).

ErstInstallation

Ab TAA-Version 9.10 ist TaaVsPackEdge nicht mehr Teil der ausgelieferten Dateien.

Zur Erstinstallation kann die aktuelle Version der Extension herunter geladen werden.

Durch Klicken auf „Öffnen“ wird die Installation gestartet.

Anschließend auf „Install“ klicken.

1)
ab V 9.06
2) , 5)
ab V9.06
3)
ab V9.10
4)
ab V9.03
6)
Menü Help/About Visual Studio
7)
Menü Tools/Extensions and Updates
8)
ab V2.42