What's New für Entwickler (mit VS Code)

14. Dezember 2017 16:02

Beim Arbeiten mit AL in Visual Studio Code (VSC) mit der Extension für AL ist ja verglichen zu C/SIDE so ziemlich alles neu, auch wenn die Syntax im Vergleich zu C/AL ähnlich aussieht, deswegen starte ich hier mal einen Sammelthread für das "Modern Development Environment" ab NAV 2018 bzw. Business Central, bei dem die initiale Previewphase ja nun abgeschlossen ist.
In diesem Thema bitte keine Beiträge zu C/SIDE bzw. C/AL.

Microsoft Docs
Development in AL


[Updates ab 05.09.19] Neue Features ab Oktober 2019 (15.x)
Modern developer tools
Brüche in der Programmstruktur der BaseApp (die jetzt wieder Base Application heißt) und der System Application (ab BC 15) werden hier aufgeführt: Breaking Changes...and how to resolve them

Dynamics 365 Business Central on-premise Wave 2: changing license
New AL file type icon
Dynamics 365 Business Central Wave 2: customizing the Base Application
Asynchronous programming in D365 Business Central 2019 wave 2: Page Background Tasks
Business Central 2019 Wave 2 – How to add your own headlines
Business Central 2019 Wave 2 – How to extend the Business Charts with your own charts
The “SystemId” in Microsoft Dynamics 365 Business Central 2019 release Wave 2
Customization INSIDE the System Application in Dynamics 365 Business Central


[Update 23.01.19] Neue Features ab April 2019 (14.x)
Release Notes April '19
Designer Enhancements
Standard Web API


GitHub
AL (Bugmeldungen, Fragen zu AL, Kompiler usw.)
FAQ
Für Eventrequests, Fragen zu Funktionalitäten in Extensions (Forum wurde im November 2018 eingerichtet)
ALAppExtensions

Starting with AL: Frequent issues (mostly with download symbols).
Die Lizenz auf dem Server bzw. in der Datenbank muss dabei auch eine NAV 2018 Entwickerlizenz sein. Mit der NAV 2018 Cronuslizenz oder einer NAV 2017 Entwickerlizenz war es bei uns nicht möglich, "Download Symbols" erfolgreich auszuführen.

A.J. Kauffmann
How to connect Visual Studio Code with NAV 2018
The different AL Extensions versions for Visual Studio Code
Running NAV docker containers on a local Hyper-V Virtual Machine
Isolated Storage in your Business Central App
Outbound HTTP calls blocked in Business Central Sandbox
PDF Viewer in Business Central

Waldo
Autonumber Objects in AL
Enable Code Analysis for AL
Enable the updated code analysis for AL
Function Overloading in AL
Microsoft Dynamics 365 Business Central & NAV Event Publishers Repository
To Hybrid or Not To Hybrid
App Dependency Tree – import your apps in the right order (with PowerShell)


MSDN NAV-Blog
Generate Symbols in a Modern Development environment with Microsoft Dynamics NAV 2018
Import Symbols in New or Upgrade Databases with Microsoft Dynamics NAV 2018

Hilfreiche Forumsthemen
Dynamics 365 Business Central : New modern development environment

Sonstige Blogs
Alexey N. Finogenov
Sample Extension v2.0 — Dynamics NAV / AL extension / SaaS — ALF Export Setup Tabs to Excel
How to add a field to Item Card in Business Central
Dmitry Katson
Demystifying installation process for Business Central Apps
Demystifying upgrade process for Business Central Apps
My NAV Blog
Hit F12 – some tricks in VSCode
Steven Renders
How Do I: Develop an Extension in Business Central On Premises?
ArcherPoint
How To: Add a Field in an Extension in Microsoft Dynamics Business Central/NAV
Tobias Fenster
Export errors and warnings from VS Code

Videos
Dynamics 365 Business Central Development (Playlist)
Dynamics NAV - C/AL vs AL - Spot the Differences
AL in Visual Studio VS Code for Those Who are Still Afraid (NAV)
Dynamics NAV - Getting Started With Visual Studio Code
Visual Studio Code Building Publishing and Debugging AL Projects
Real Life Experiences with Per Tenant Extensions
Using Azure DevOps with your AL Development
Get started with Testing your AL Code
Outline View in VSCode with AL development
Running multiple NAV/BC containers on an Azure VM
What does it mean to 'build' an app for Business Central
Getting easily from functional test case definitions to automated tests
How I learned NAV in a few months

Extension Tools für Visual Studio Code
Für AL
Für Git
SQL-Server

Themes
Mit diesem Farbdesign, das farblich an C/AL erinnert, erscheinen Funktionsnamen, Befehle, einfache Feldnamen u.a. in AL im Fettdruck.
Dynamics NAV C/Side Theme

Sonstige Tools
Als kostenloses Add-on die Page 1000 um das Arbeiten mit alten und neuen Werkzeugen zu verbinden.
ForNav Modern Object Explorer

Für XLIFF-Sprachdateien
SynXLIFF
xliffCompare
NAB AL Tools

Für Upgrades
AL Upgrade Toolbox

Azure Tools
Azure DevOps

Re: What's New für Entwickler (mit VS Code)

14. Dezember 2017 16:28

Hi,

ich hab bisher noch nichts mit Visual Studio Code gemacht. :-( :-?

Habe ich richtig verstanden, dass man das VS Code AL benutzt um Extensions für Nav2018 zu programmieren?
Und das geht nur mit dem VS Code, und nicht mit Visual Studio?
Und alles andere wie gehabt weiter in dem "Nav Development Environment" mit C/SIDE C/AL ?

Danke

(Verzeiht meine Dumme Fragen zum NAV 2018, aber nachdem ich auf Nav 2009 CC festsitze, und den Anschluss zu 2016 verpasst habe, hoffe ich nun mit 2018 wieder anschluss zu finden )

Re: What's New für Entwickler (mit VS Code)

15. Dezember 2017 00:23

Habe ich richtig verstanden, dass man das VS Code AL benutzt um Extensions für Nav2018 zu programmieren?

Ja, derzeit nur für Extensions (für NAV). In Zukunft soll aber die gesamte Entwicklung dort stattfinden.
Und das geht nur mit dem VS Code, und nicht mit Visual Studio?

Ja. VS Code hat trotz der Namensähnlichkeit nichts mit dem "großen" Visual Studio gemein. Das ist ein plattformübergreifender Texteditor (auch für macOS,Linux) für Programmiersprachen mit integrierter Quellcodeverwaltung, der mit zahllosen Extensions für viele Zwecke erweitert werden kann.
https://code.visualstudio.com/
Eine dieser Extensions (für VS Code) ist "AL Language" von MS, die erst das Programmieren von Extensions (für NAV :wink: ) in AL (Application Language) ermöglicht. Ohne die "AL Language"- Extension gibt es keine Verbindung zur Datenbank bzw. zu deren Dienst, keinen Debugger, kein sprachspezifisches Intellisense, keine Codevorlagen, kein Kompilieren mit Fehleranzeige usw.
Daneben gibt es auch schon diverse kleine Extension-Tools für NAV, hatte Natalie hier schon verlinkt.
Und alles andere wie gehabt weiter in dem "Nav Development Environment" mit C/SIDE C/AL ?

Noch, aber nicht mehr lange. Da sind die Tage gezählt und da die Lernkurve für die neue Umgebung recht hoch ist, lieber heute als morgen damit anfangen.

Re: What's New für Entwickler (mit VS Code)

15. Dezember 2017 09:36

Hi Kowa,

danke für die Erklärung.

Mit "in der Zukunft soll die ganze Entwicklung dort stattfinden", ist damit "Alles" gemeint? Pages, Reports, usw?

Das Ding ist irgendwie total an mir vorbeigegangen, so war ich immer im Glaube irgendwann würde Visual Studio (das Große) die NAV Entwicklungsumgebung ablösen.
Dann muss ich jetzt aufpassen dass ich den Zug nicht wieder verpasse. Ist C# .Net für die NAV Zukunft wichtig? Habe die letzten Jahre fleißig gelernt weil auch immer dachte dass ich das in der NAV Zukunft brauchen würde.

Re: What's New für Entwickler (mit VS Code)

15. Dezember 2017 17:57

elTorito hat geschrieben:Mit "in der Zukunft soll die ganze Entwicklung dort stattfinden", ist damit "Alles" gemeint? Pages, Reports, usw?

Ja. Standard Pages kannst du dann mit "PageExtensions" anpassen. Wenn du das VSCode mit der AL Extension installiert hast mach einfach mal "STRG + SHIFT + P" und dann "AL: GO!". Dann wird die ein Projektordner angelegt mit einem kleinen "Hallo Welt!" Beispiel drin.. in diesem wird die "Customer Card" erweitert.
Es gibt auch einen "In App Designer". Mit dem kannst du im laufendem NAV Anpassungen machen und diese anschliessend runter laden. (meine 2 Versuche damit sind bisher aber gescheitert).

elTorito hat geschrieben:Ist C# .Net für die NAV Zukunft wichtig? Habe die letzten Jahre fleißig gelernt weil auch immer dachte dass ich das in der NAV Zukunft brauchen würde.

Nein und Ja.
Du wirst in NAV kein DotNet Bibliotheken und Variabeln mehr direkt benutzen können.
ABER es gibt "Azure Funktionen" welche in jeder X-Beliebigen Programmiersprache geschrieben werden können. Dies ermöglicht einen viel einfacheren Zugriff auf viel mehr Funktionen.

Das Ganze fühlt sich am Anfang sehr ungewohnt an. Lass dich nicht entmutigen. Ich hab nebenbei auch noch C/SIDE offen um bei manchen Sachen einfach nach zu schauen. Fang an für Sachen die du immer wieder machen musst, Makros zu schreiben, das erleichtert die arbeit ungemein. Nimm dir die Zeit und Teste einfach mal rum. Durch die Integration mit Docker lässt sich eine NAV2018 Testumgebung innerhalb von 5 Minuten auf setzen.

Re: What's New für Entwickler (mit VS Code)

16. Dezember 2017 00:14

Wohl wichtiger als C# innerhalb eines erweiterten NAV wäre es m.E., JavaScript zu lernen, dafür gibt es in AL bereits integrierten Support für Control-Add-ins. Das ist hier zukünftig also viel leichter als in C/AL einzubinden.
https://blogs.msdn.microsoft.com/nav/2017/10/12/nav-development-preview-october-update/

Für Control-Add-ins kann C# auch nur im WIndowsclient (vormals RTC) genutzt werden, und da der bei MS auch schon auf der erweiterten Abschussliste steht, werden nur noch Technologien forciert, die im Webclient bzw. Universal App (Tablet bzw. Phone Client) für mobilen Einsatz und natürlich der Cloud genutzt werden können.

Für das visuelle Design bei Reports gibt es (noch?) keinen Support, das läuft weiterhin den über Report Builder oder Visual Studio Professional, wenn man mehr Komfort möchte. In AL sind es dann im Gegensatz zu C/AL pro Report zwei getrennte Dateien, eine mit .al für den Quellcode und eine mit .rdlc-Endung für das Layout.

Re: What's New für Entwickler (mit VS Code)

18. Dezember 2017 09:43

Aus dem Blog von A.J. Kauffmann:

Porteinstellungen und Webclient url sind ggf. anzupassen
How to connect Visual Studio Code with NAV 2018

Es kursieren verschiedene Builds bzw. Bezeichnungen, je nach Installationsweg
The different AL Extensions versions for Visual Studio Code
Obere Extension (for Dynamics NAV) wurde über die .vsix-Datei der DVD im Ordner ModernDev manuell installiert, unten (for Dynamics 365) über Marketplace installiert.
ALextensions2.png

Nachtrag: Die Versionen müssen dabei genau zueinander passen, siehe hier.

Running NAV docker containers on a local Hyper-V Virtual Machine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: What's New für Entwickler (mit VS Code)

19. Dezember 2017 13:03

Das Ganze fühlt sich am Anfang sehr ungewohnt an. Lass dich nicht entmutigen. Ich hab nebenbei auch noch C/SIDE offen um bei manchen Sachen einfach nach zu schauen. Fang an für Sachen die du immer wieder machen musst, Makros zu schreiben, das erleichtert die arbeit ungemein. Nimm dir die Zeit und Teste einfach mal rum. Durch die Integration mit Docker lässt sich eine NAV2018 Testumgebung innerhalb von 5 Minuten auf setzen.


Ja, Lernkurve ist hoch. Da sind viele Begriffe die ich zwar mal gehört habe, aber nicht näher mit befasst habe. Die da wäre, Docker, PowerShell, Visual Studio Code, Dies das jenes... Sehr viel Neuland für mich :roll:

Wenn ich Fragen rund ums Visual Studio Code , Extensions Programmierung/Veröffentlichung, ... ... , habe. Auch hier in den Nav 2018 Bereich?

Re: What's New für Entwickler (mit VS Code)

19. Dezember 2017 13:19

elTorito hat geschrieben:Wenn ich Fragen rund ums Visual Studio Code , Extensions Programmierung/Veröffentlichung, ... ... , habe. Auch hier in den Nav 2018 Bereich?

Wenn es im Zusammenhang mit Microsoft Dynamics NAV 2018 zu tun hat: Klar, dafür ist dieses Forum ja da.
Wenn es nichts mit Microsoft Dynamics zu tun hat, könnte deine Frage in eine darauf spezialisierte Community besser aufgehoben sein.

Re: What's New für Entwickler (mit VS Code)

19. Dezember 2017 14:53

Ich habe jetzt schon einiges mit VS Code probiert und auch erste Erfolge erzielt. Eines ist mir bisher nicht gelungen und ich bin mir sicher, dass ich mich nur zu blöd anstelle: wie kann ich in einer Extension das Verhalten eines vorhandenen Feldes ändern? Also eine simple Logik, z.B.: ich möchte eine E-Mail-Adressfeld mit einer RegEx-Prüfung auf Gültigkeit versehen. Die Codeunit mit der Funktion zur Prüfung ist kein Problem und fertig, aber wie kann ich jetzt auf z.B. den OnValidate-Trigger des Feldes zugreifen oder von mir aus natürlich auch auf ein passendes Event.

Sync-NAVApp erforderlich für Extensions V2

19. Dezember 2017 15:01

Zum bekannten Sync-NAVTenant gesellt sich für Extensions noch ein zweiter Befehl zum Synchronisieren: Sync-NAVApp.

Der muss zwischen Publish-NAVApp und Install-NAVApp eingeschoben werden, um Tabellen und Felder der Extension für die Installation bereitzustellen, ggf. zusammen mit dem ebenfalls neuen Start-NAVDataUpgrade falls eine ältere Version der Extension vorhanden war.

[Nachtrag 3.01.19]: Zum Entfernen von eventuell vorhandenen alten Versionen der Extension bzw. Installationsversuchen derselben wird Sync-NAVApp dabei mit dem Parameter -Mode Clean ausgeführt (Achtung: Das bedingt kompletten Datenverlust aller Daten aller Versionen der App :!: (Link)).
Daher erscheint hier die Sicherheitsabfrage, falls man die nicht mit -Force unterdrückt.
SyncCleanMode.png

How to: Publish and Install an Extension v2.0

Aber nicht die einzigen Newcomer, komplette Liste der aktuellen Cmdlets hier:
Microsoft.Dynamics.Nav.Apps.Management (NAV 2018)
im Vergleich zu NAV 2017
Microsoft.Dynamics.Nav.Apps.Management (NAV 2017)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: What's New für Entwickler (mit VS Code)

19. Dezember 2017 15:44

Tim hat geschrieben:Also eine simple Logik, z.B.: ich möchte eine E-Mail-Adressfeld mit einer RegEx-Prüfung auf Gültigkeit versehen. Die Codeunit mit der Funktion zur Prüfung ist kein Problem und fertig, aber wie kann ich jetzt auf z.B. den OnValidate-Trigger des Feldes zugreifen oder von mir aus natürlich auch auf ein passendes Event.


Es gibt die Möglichkeit es beim Validieren des Tabellenfeldes zu machen (OnBeforeValidateEvent/OnAfterValidateEvent)
Code:
[EventSubscriber(ObjectType::Table, 18, 'OnAfterValidateEvent', 'MEINFELD', true, false)]
local procedure OnAfterValidateEventEmail(var Rec : Record "Customer"; var xRec : Record "Customer"; CurrFieldNo : Integer);
...


Oder wenn du die Validierung nur auf ein bestimmtes Feld auf Page xy haben möchtest dann mit einer Pageextension
Code:
pageextension 50099 CustomerExt extends Customer
{
    layout
    {
        modify("E-Mail") {
            //MEin Code
        }
    }
}

Anniversary Update

20. Dezember 2017 18:09

Andere Programmiersprachen konnten es schon immer, AL kann es nun auch, und ab NAV 2018 R2 (oder wie auch immer die Version heißen wird…) sollte es zusammen mit NAV dann auch gehen: Funktionen können überladen werden.
NAV Development Preview – Anniversary Update

Re: What's New für Entwickler (mit VS Code)

21. Dezember 2017 17:07

In C/AL müssen temporäre Tabellen zur Laufzeit ja nicht lizenziert sein, nur bei der Entwicklung. Bei Extensions soll es aber anders sein; Apps, die temporäre Tabellen außerhalb der Lizenz verwenden, sind nicht installierbar (Quelle: Weihnachtsrundmail von Mark Brummel).

Re: What's New für Entwickler (mit VS Code)

10. Januar 2018 17:09

Aufzeichnung eines Webinars mit Mark Brummel
Dynamics NAV - C/AL vs AL - Spot the Differences

Weitere Videos:
Dynamics NAV - Getting Started With Visual Studio Code
Visual Studio Code Building Publishing and Debugging AL Projects

Re: What's New für Entwickler (mit VS Code)

12. Januar 2018 11:24

Kowa hat geschrieben:Aufzeichnung eines Webinars mit Mark Brummel
Dynamics NAV - C/AL vs AL - Spot the Differences


Gibt es eigentlich eine Demo Lizenz für Entwickler?
Ich wollt gerade mal dem Webinar folgen. Und scheitere bei der Konvertierung Txt2Al.
"You do not have Permissions to run the File, Export, Text, System"
So kann man doch nicht testen "What's new" , zumindest nicht als Endanwender Entwickler :-)

:-(

Re: What's New für Entwickler (mit VS Code)

12. Januar 2018 11:42

elTorito hat geschrieben:Gibt es eigentlich eine Demo Lizenz für Entwickler?
Speziell in Kombination mit AL nicht - hast du schon die normale NAV Demolizenz ausprobiert? Natürlich auf Basis einer Demo-DB. Sämtliche Programme im Admin-Modus öffnen.

Re: What's New für Entwickler (mit VS Code)

12. Januar 2018 11:46

Natalie hat geschrieben:
elTorito hat geschrieben:Gibt es eigentlich eine Demo Lizenz für Entwickler?
Speziell in Kombination mit AL nicht - hast du schon die normale NAV Demolizenz ausprobiert? Natürlich auf Basis einer Demo-DB. Sämtliche Programme im Admin-Modus öffnen.


Ja. Habe unsere flf probiert. Damit kann ich zwar nun im Klassischen Nav Dev Environment Objekte Mnauell als *txt exportieren (kam mit der Cronus Lizenz auch vorher die Meldung).
Aber über die Txt2Al kommt noch immer die Fehlermeldung. Habe unsere flf in Cronus.flf umbenannt und ins 110\RoleTailored Client\ kopiert, dann Dienst neu gestartet. Hmm.

VSIX und CU müssen chronologisch passen

23. Januar 2018 11:44

Generate Symbols in a Modern Development environment with Microsoft Dynamics NAV 2018

Wichtiger Hinweis im Artikel: Die Version der Extension muss immer zum Cumulative Update der Datenbank passen, wo die Extension implementiert werden soll.
NOTE: It is very important to have the VSIX from the same platform version as your Dynamics NAV installation, otherwise you cannot publish (F5) your extension. Be really sure, then, to have the same VSIX targeting your Dynamics NAV 2018 installation files (e.g. VSIX RTM targeting RTM installation, VSIX CU 1 targeting CU 1 installation and so on).

Das bedeutet leider mal wieder erhöhten Verwaltungsaufwand bei der Entwicklung :roll: .

Re: What's New für Entwickler (mit VS Code)

23. Januar 2018 11:58

Bist du die Sicher, dass du dies richtig Interpretierst?
Da steht nur das du im VS Code die entsprechende AL Extension benötigst um es mit F5 zu publishen. Das sollte man in ner Liveumgebung eh nicht machen.
Da steht nix davon das die *.app immer mit der gleichen Version erstellt worden sein muss.

Re: What's New für Entwickler (mit VS Code)

23. Januar 2018 12:41

Ich denke da nicht an Liveentwicklung.
Als Partner bekommen wir Bestellungen für alle Versionen, daher haben wir auch alle Datenbankversionen. Das bedeutet auch, dass wenn jemand eine Extension für eine bestimmte Version haben möchte, diese zum Testen in dieses CU eingespielt werden muss. Das ist dann aber nur möglich, wenn man genau die richtige (korrespondierende) VSIX installiert hat, die zum CU der Datenbank passt. Die notwendige Technik muss also in Zukunft auch separat monatlich verwaltet werden und die VSIX bei Bedarf immer wieder in VS Code deinstalliert und neu installiert werden.

Re: What's New für Entwickler (mit VS Code)

24. Januar 2018 00:12

Waldo hat undokumentierte Funktionen entdeckt.
Autonumber Objects in AL
Enable Code Analysis for AL

Re: What's New für Entwickler (mit VS Code)

5. Februar 2018 00:15

AL Code Outline ist eine Extension um die Struktur eines AL-Projekts (al, rdlc, xml, json, javascript, css, html usw.) als TreeView darstellen und darin zu navigieren. Außerdem können damit auch die enthaltenen Objekte aus .app-dateien, z.B. die nach "Download Symbols" im Ordner .alpackages erzeugt werden, als Liste angezeigt werden (dazu auf der App-Datei Rechtsklick "Open in AL Object Browser" ausführen).
ALObjectBrowser.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: What's New für Entwickler (mit VS Code)

5. Februar 2018 10:03

Import Symbols in New or Upgrade Databases with Microsoft Dynamics NAV 2018

Re: What's New für Entwickler (mit VS Code)

6. Februar 2018 16:59

Mit diesem Farbdesign, das farblich an C/AL erinnert, erscheinen u.a. auch Funktionsnamen, Befehle, einfache Feldnamen in AL im Fettdruck.
Dynamics NAV C/Side Theme
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.