Montag, 22. Oktober 2018, 15:17 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Gerasan

unregistriert

1

Dienstag, 29. Januar 2008, 00:04

.NET Indikatoren einbinden und testen

Ich habe versucht mit Visual Basic 2008 (IDE Visual Studio 2008 ) einen externen Indikator zu erstellen. Das hat soweit geklappt mit der Schritt für Schritt Anleitung aus dem Entwickler Kit. Mir ist es allerdings nicht gelungen den Indikator zu debuggen. Es wäre super nett wenn die Schritt für Schritt Anleitung auch das einem erklären würde.

Bisher habe ich verstanden, daß VS(Visual Studio) 2008 den Build immer parallel in zwei Verzeichnisse erstellt:
...\Visual Studio 2008\Projects\ClassLibraryINV\ClassLibraryINV\bin\Release
...\Visual Studio 2008\Projects\ClassLibraryINV\ClassLibraryINV\bin\Debug

die DLL mit den Breakpoints kommt ins \Debug Directory

es ist jedoch nicht klar, was man unternehmen soll, damit Investox die DLL mit den Breakpoints und nicht die andere aufrufen soll. Hab schon die gacutil und regsam erneut im Debug-Directiry ausgeführt. Indikator im Investox läuft jedoch nicht auf den Breakpoint.

Übrigens, gacutil kann man im VS 2008 nicht so einfach finden. Sie lässt sich jedoch über Visual Studio 2008-Eingabeaufforderung aufrufen: Start-> Programme-> VS 2008-> VS Tools ->Visual Studio 2008-Eingabeaufforderung.

Und noch was: evt. wäre ein Sub-Forum für Externe Indikatoren oder Programmierung in VB angebracht?

Bernd

Erleuchteter

Registrierungsdatum: 5. Juni 2005

Beiträge: 3 898

Wohnort: Iringsweg

2

Dienstag, 29. Januar 2008, 06:19

Hallo Gerasan

> es ist jedoch nicht klar, was man unternehmen soll, damit Investox die DLL mit den Breakpoints und nicht die andere aufrufen soll.
Was zuletzt registriert wurde, zieht.

Zwar sind .NET Indis momentan nicht die Ecke, an der ich arbeite, aber ich hatte den Entwicklungs-Zyklus incl. Debugging mal hier beschrieben; vielleicht ist der Text hilfreich.

Ich verwende übrigens einen bedingten Stop in meinen Indis (In INV für den externen Indi einfach einen passenden Text-Parameter, z.B. "Debug" definieren), und kann damit verschiedene Stop-Level in der .dll erreichen ("START" läuft einen STOP am Anfang des Indis an, "ENDE", einen am Ende und LOOP könnte einen STOP in der Verarbeitungsschleife erreichen etc. Der Default-Wert für Debug ist OFF; wenn also der Parameter nicht übergeben wird in der finalen INV-Definition des Indis, so wird auch nie ein Stop angelaufen.
Gruss
Bernd

-----------------------------------------------
http://www.13quants.ch

Gerasan

unregistriert

3

Dienstag, 29. Januar 2008, 10:31

danke für die Antwort,
heist das, daß die assembly nur einmalig in den global assembly cache geladen werden soll und mit regasm registriert werden soll. Danach kann ich das Coding ändern und immer wieder neu comlilieren. Es wird immer die jungst compilierte Version gezogen. Die muß ich nicht immer wieder in den cache laden und registrieren, solange der name der allembly sich nicht ändert. Richtig?

Bernd

Erleuchteter

Registrierungsdatum: 5. Juni 2005

Beiträge: 3 898

Wohnort: Iringsweg

4

Dienstag, 29. Januar 2008, 17:48

Hallo Gerasan

Ich habe es immer als einen Zyklus betrachtet und in eine .cmd Datei verpackt wie in dem geposteten Link beschrieben
* Compilieren
* regasm / gacutil
* INV stoppen / starten

Keine Ahnung, ob man nur neu kompilieren kann und dann geht es. Ich glaube aber nicht, dass es geht. Windows zieht eine dll in einen Cache und führt ab da aus. Wenn der Cache nicht invalidiert wird, dann wird wohl trotz neukompilieren die alte dll ausgeführt. Aber hey, regasm & Co. steht im cmd File und dieses wird durch den Debug-Button der Entwicklungsumgebung mit ausgeführt. Warum über die zusätzliche Millisekunde im Zyklus sich den Kopf zerbrechen?
Gruss
Bernd

-----------------------------------------------
http://www.13quants.ch

Hans-Jürgen Männlich

Administrator

Registrierungsdatum: 10. Juli 2002

Beiträge: 1 712

Wohnort: Niedersachsen

5

Dienstag, 29. Januar 2008, 18:11

Zitat

Und noch was: evt. wäre ein Sub-Forum für Externe Indikatoren oder Programmierung in VB angebracht?
vermutlich ja.....werde mal etwas darüber brüten....
Viele Grüße,
Hans-Jürgen

Gerasan

unregistriert

6

Mittwoch, 30. Januar 2008, 08:30

Ich habe jetzt rausgefunden, das nach dem kompilieren NUR die Classenbibliotek.dll im GAC installiert werden muß, damit die Änderungen wirksam werden. Eine .bat als Post-build Ereignis ist eine gute idee, wollte ich auch machen, nur in VS2008 gibt es da leider eine Schwierigkeit über die ich nicht drüber komme. Die gacutil.exe, die in den früheren .NET Versionen einfach in einem Verzeichnis lag und direkt ausführbar war (so wie von AK in der Schritt für Schritt Anleitung beschrieben) gibt es nicht mehr. In VS2008 muß man über Start -> Programme -> VS2008 -> Tool eine "Spezielle" Eingabeaufforderung aufrufen, und nur dort ist gacutil verfügbar. Nun weiss ich bisher nicht, wie man das alles im Post-Build Ereignis eingibt. :(
Es ist natürlich auch kein Problem, das jedesmal über die Eingabeaufforderung zu machen, aber über das Ereignis wäre es natürlich viel eleganter.