Just making the last touch-ups for the next posts, when I noticed that there is not that many examples on how to use custom assemblies in AL code.
With the release of the full version of Business Central the 1. of October, some info on this topic is more and more relevant. So this is just a quick post based on my MQTT client example.
This is basically just the same code, though some things have been cut out, just to slimline it a bit. Everything related to sending have been removed.
I used txt2al and renamed a few of my vars, had a few overlapping new keywords in AL.
Why I didn’t make it from scratch in AL? Two reasons. First, Txt2al is just a great tool and it works almost flawlessly. Secondly, VS Code is a terrible tool to begin writing AL code which contains DotNet. There is almost no help what-so-ever when using DotNet. So until this is fixed I would recommend you to use C/Side and then convert the code afterwards.
The following have been shown elsewhere, but just want to reiterate it. To use custom assemblies you need to specify what directory they are in and then define them afterwards.
Like here I have mine in a subdir, called .netpackages, of my project folder.
This is then referred to in the .vscode\settings.json file like this.
With this over it is now possible to use the assemblies in the project, but first we need to refer to them like this.
This is where C/SIDE comes handy, as these lines are not possible to find in VS Code. You just like have to know what to write, not impossible, just really annoying.
The same can be said about DotNet triggers, you just have to know them, as there is no autocomplete.
So you can see DotNet development isn’t really implemented in AL yet.
E.g. it is expected that you just know the trigger name and all its parameters. Like the first line in the code below. No help.
So if you want to do DotNet in AL, just add the variables and triggers in C/SIDE and then do a txt2al. You will thank yourself afterwards.
The entire project can be found here https://github.com/SShadowS/AL-MQTT-example