Seite 1 von 1

[gelöst] Automated Tests/ Generate Symbol Reference

Verfasst: 22. Februar 2019 13:24
von c.grabs
Hey,
ich habe meine erste Extension für BC erstellt und wollte nun eine Test CodeUnit schreiben. Hierfür habe ich die .fobs aus dem TestToolKit der Installations CD (CU3) in die Development Environment importiert und wollte nun auf die Objekte (z.B. CU Assert) in Visual Studio Code zugreifen.

Hierbei habe ich gesehen, dass zuerst das Command "Generate Symbol Reference" ausgeführt werden muss. Ich habe es über die Eigenschaften der finsql.exe versucht, über ein Powershell Skript und mit der GUI http://www.msdynamics.de/viewtopic.php?f=17&t=34603#, doch leider wird in VS Code die CU immer noch nicht erkannt. In der Development Environment lassen sich die Objekte fehlerfrei kompilieren.

Hat noch jemand eine Idee, was ich machen kann?

Liebe Grüße
Christian

Re: Automated Tests/ Generate Symbol Reference

Verfasst: 23. Februar 2019 17:31
von sweikelt
Hi Christian,

wenn deine Objekte in VS-Code nach dem herunterladen der Symbole trotzdem nicht verwendet (erkannt) werden, dann liegt das daran, dass die Symbole nicht korrekt erstellt worden, oder du ggf. in deinem Extension-Ordner
-> DeineExtension\.alpackages\ noch eine alte App-Datei hast -> Microsoft_Application_X.X.X.X.app
Ich hatte bei mir 2 von diesen App-Files in meinem Extension-Ordner - eine war total veraltet, wurde aber immer verwendet - ich habe diese gelöscht und dann die Symbole neu geladen - siehe da, es klappt :roll:

Re: Automated Tests/ Generate Symbol Reference

Verfasst: 25. Februar 2019 12:57
von Ted
Ich hab die Erfahrung gemacht, dass wenn ich den DEVClient ohne "generatesymbolreference=1" starte und ein Objekt darin kompeliere, gehen die generierten Symbols verloren.
Hab mir eine Verknüpfung vom DevClient erstellt die die Symbole direkt mit erstellt
Code:
"C:\...\finsql.exe" generatesymbolreference=1

Re: Automated Tests/ Generate Symbol Reference

Verfasst: 25. Februar 2019 18:52
von c.grabs
Hi,
vielen Dank Stephan! Endlich kann ich die Codeunits verwenden.

Grüße
Christian

Re: [gelöst] Automated Tests/ Generate Symbol Reference

Verfasst: 26. Februar 2019 14:08
von Kowa
@c.grabs
Keine Vollzitate, Forumsknigge beachten!

Re: [gelöst] Automated Tests/ Generate Symbol Reference

Verfasst: 2. Juli 2020 15:03
von Timo Lässer
Ich grabe diesen Thread mal aus, weil ich vor dem gleichen Problem stehe.

Datenbank: D365 BC14 CU06 (NAVW114.07)
Runtime: D365 BC14 CU06 (14.0.37587)

In diese Datenbank habe ich den IDYN Object Manager Advanced 14.01 importiert und alle OMA*-Objekte kompiliert.
Wie vorgeschlagen, habe ich die finsql.exe mit dem Parameter generatesymbolreference=1 (als Administrator) gestartet.
In /.alpackages/ habe ich die beiden .app-Dateien gelöscht und anschließend AL: Download Symbols aufgerufen.

Trotzdem wird in meinem AL-Code die Referenz zu einer OMA-Codeunit nicht erkannt.
Die Referenzen auf NAV-Standardobjekte werden sauber erkannt.

Was mache ich falsch und wie mache ich es richtig?

Re: [gelöst] Automated Tests/ Generate Symbol Reference

Verfasst: 2. Juli 2020 17:51
von sweikelt
sind die Symbole auch richtig erstellt worden?

sprich "C:\Program Files (x86)\Microsoft Dynamics 365 Business Central\140\RoleTailored Client\navcommandresult.txt" ist ok bzw vorhanden?

hast du die Objekte kompiliert, bevor du die finssql.exe mit generatesymbolreference=1 gestartet hast?
falls ja - dann einfach nochmal kompilieren (finssql.exe mit generatesymbolreference=1)

Re: [gelöst] Automated Tests/ Generate Symbol Reference

Verfasst: 3. Juli 2020 08:48
von Timo Lässer
Weitere Versuche meinerseits:

- Alle OMA*-Objekte nochmals kompiliert
- Den Dev-Client mit generatesymbolreference=1 neu gestartet
- Ordner .alpackages gelöscht
- AL:Download Symbols ausgeführt

Ergebnis: Jetzt kannte VS Code zwar die OMA-Objekte, dafür aber nicht mehr die NAV-Standardobjekte. :shock:

Nächster Versuch:

- Alle(!) Objekte nochmals kompiliert
- Den Dev-Client mit generatesymbolreference=1 neu gestartet
- Ordner .alpackages gelöscht
- AL:Download Symbols ausgeführt

Ergebnis: Jetzt kennt VS Code alle Objekte, meckert aber eine Funktion an.
Screenshot.png


Also weiter gegoogelt und festgestellt, dass in der app.json der Eintrag target fehlte und die App daher davon ausging, dass sie als Cloud-Lösung veröffentlicht werden soll.
Nachdem ich "target": "Internal" hinzugefügt und gespeichert hatte, verschwanden die Meldungen dieser Art.
Zur Info für alle anderen, die gerade erst mit der App-Entwicklung beginnen: Ab BC15 muss es "target": "OnPrem" lauten.