My 8 Favorite Rather Unknown VS Code Extensions for AL
More and more developers are venturing their first bold steps into AL terrain. Gone are the days when dinosaurs could move on safe C/AL ground and look forward to new developments in a cheerful and leisurely manner.
With the move to the VS Code development environment and the AL programming language, we as a developer community have the opportunity to adapt VS Code to our needs. Innovations in the AL area are happening faster and faster, new extensions are sprouting from the ground and it’s hard to keep an overview of them.
Many developers know by now the popular VS Code Extensions for AL like Andrzej Zwierzchowski’s AZ AL Dev Tools/AL Code Outline (God, the name of the extension is almost harder to pronounce than Andrzej’s name) and waldo’s CRS AL Language Extension. But what about other VS Code Extensions that don’t have so many installs/downloads yet?
I took the time and tested 22 VS Code Extensions for AL. I only tested extensions that have less than 5,000 installs and are not extension packs. Extensions that are only for internal use in companies are also excluded. And if you’re wondering now if I have nothing better to do than test so many extensions…well, I’d like to know that too, haha.
For the stressed developers with little time I have created a small overview right at the beginning with the coolest features of the extensions from my point of view. If you don’t have much time, take a look at the short overview and forget about the detailed overview.
Oh yeah. I wrote two blogposts a while back that should make your life in AL easier as well. You might want to check them out:
Feel free to let me know if I forgot an extension that you think belongs here. I have tried to dig out all extensions, but it can always be that one has fallen under the table.
TLDR: The 8 Coolest Extensions and Features
These are the 8 extensions and features that are definitely worth testing:
- AL Studio
- AL Object Helper: Open AL Object
- AL Variable Quickfixes: Remove Unused Variables
- AL Structure Creator: Create All Folder Structure
- AL Productivity Tools: Fix AL CodeCop Issues
- AL Central: Generate E/R diagrams for BCentral.dev (paid service)
The Complete Unsorted List: 22 Extensions
This is an unsorted list of the tested extensions. I used smileys to indicate my opinion of the extensions:
- 🙂 = You should definitely try the extension!
- 😐 = It is worth to try the extension if you want to.
- 🙁 = The extension is not useful for me.
1. DSaladin – AL Object Helper 🙂
AL Object Helper was a pleasant surprise among the tested extensions. It contains a really cool feature called “Open AL Object” that allows you to open any object from the apps. This is an elegant way to open object definitions if you are too lazy to go the AL Object Designer or AZ AL Dev Tools route. We are developers, after all. Being lazy is in our blood.
I created a new AL Project with a few files for testing the command. In this project I have opened the table “Customer” and my custom page “My Setup”:
This feature is definitely one you should try. However, I noticed that the extension sometimes takes a long time to load the objects when opening an AL project. For more complex projects, it sometimes gets stuck when loading and can’t open any objects.
2. Dmitry Katson – iAL 🙁
The general idea: “Just type the name of your action and iAL will propose the best image for it using machine learning algorithms.” I liked the idea of this extension but unfortunately it does not seem to work anymore and the repository is no longer being maintained.
This example is taken from the readme of the extension:
When I try to use the same example, I get this error:
3. Kepty.cz – AL ID Range Manager 😐
This extension is for centralized object ID assignment. If I remember correctly, the prototype was built during a hackathon and then improved after that.
I remember that I wanted to try this extension a few months ago but then stopped as I read through the readme. It just seemed way too complicated. You also had to install an app in Business Central to make this work. From my point of view, this extension is not needed anymore because AL Object ID Ninja solves the same issues in a much easier way.
4. Abakion – Abakion AL Helper 😐
There is one command that I find interesting in the Abakion AL Helper: “ABH: GO!”
On the screenshot below you can see the result. Left side: “ABH: GO!”, right side: “AL: GO!” As you can see, the Abakion AL Helper creates a folder for the logo and includes the logo in the app.json. It also creates the files “extensions.json” and “settings.json” with recommended settings and extensions for the project. If you find this useful, you might want to try this extension.
All the other commands of the extension listed here:
…are pretty much already part of the AZ AL Dev Tools Extension.
5. Daniel – AL Translation Center 😐
The extension has the following commands:
I tested all of the three commands and could not see any reason why I should use this extension. Similiar functionalities already exist in the extensions XLIFF Sync, AL Language Tools or NAB AL Tools. It makes more sense to use these extensions because they are well tested. Besides, the public repository for the AL Translation Center is empty what makes it difficult to check what exactly it is doing.
6. Himanshu Sharma – AL Variable Quickfix 🙂
A pleasant surprise. This extension has some really cool features:
My personal favorite: Remove unused global/local variables. This removes the unused variables (who would have thought that). The function is similar to the CodeAction from the extension AL CodeActions. If you don’t know what function I’m talking about…I’m talking about this one (excerpt from the readme of AL CodeActions):
The feature “Rearrange the global/local variables as per the recommended datatype sequence in AL” already exists in the extensions AZ AL Dev Tools und im AL Variable Helper. Also included in AL Variable Helper is the feature “Update keywords casing in all files”, whereas in AL Variable Helper the casing of keywords is corrected only in the current file.
In the following gif from the readme of the AL Variable Quickfix you can see AL Variable Quickfix in action. Personally, I don’t like the addition of an “L” suffix for local variables and a “G” suffix for global variables, but that’s up to you.
I also find the feature “Update Variable Name (Alt +I)” really cool.
7. Statical – Prism for AL Connector 😐
If you have not heard about Prism so far, you should definitely have a look at it. It allows you to analyse and browse code. It is extremely useful if you for example want to find usages of insert/delete/modify on a given table . The Prism for AL Connector provides a navigation between VS Code and Prism, which is a separate app outside of VS code. You are already using Prism? Alright, then this extension might be useful for you!
Example copied from stati-cal.com:
8. Mysolution BV – Mysolution AL Helper 😐
There is one feature that I found interesting: “Build App and create Translation file”. By using this command, a csv-file with your captions or missing captions is created.
Before using the features, you might want to set your languages in the extension settings:
If i remember correctly, the command “MYS: Process Translation file and keep xlf file (no publishing) will create the translation file specified in the extension settings:
I did not test the Microsoft Translator cognitive services as I did not want to invest to time to set it up.
9. bcentral – AL Central 🙂
Wow. Awesome extension. If you need E/R diagrams, this extension is definitely worth a try. One caveat: To really use it, you need to pay for it.
By using the command “AL Central: Generate E/R diagrams for BCentral.dev” a file called “bcentral.zip” will be generated in your project folder.
Upload the file to bcentral.dev to see the E/R diagrams. In order to upload the file, you will have to create an account.
10. joneug – mdAL 🙂
You might remember that waldo wrote a whole blog post about this language extension. It would require a lot of explanation and time for me to describe it here, so I will just link to waldo’s blog post. From my point of view, this is an awesome extension that everyone should try!
11. mmatthiesen – Update App Version 😐
A very basic and simple extension. Use one of the following two commands to update the version in your app.json. Decide for yourself if this is useful for you.
12. mmatthiesen – Localize Lens 🙁
In the beginning I thought this was a pretty cool idea, although I do not really understand how this is supposed to work if you have apps that are dependent from your app. I tried to use the extension but could not make it work. I even used the example below from the readme file, but there never was an option to localize my procedures.
13. Ajay Jain – Dynamics Role Centre 🙁
I have no idea what this extension is doing. There are no feature contributions inside of vs code so there seem to be no commands that you can use. No github repository was specified.
14. NAVBaaS – NAVBaaS Git 😐
I’ll be honest with you here. The last time I touched C/SIDE was 2 years ago. I was not willing to create a C/SIDE environment in order to test this extension. I am sure that this used to be a very useful extension, but I doubt that a lot of people are still using C/SIDE and want to sync it with git. If you are one of the people who thinks this is still a great extension, feel free to insult me in the comments. 🙂
15. EdySpider – AL Structure Creator 🙂
When I read the feature description, it strongly reminded me of waldo’s CRS AL Language Extension. The extension helps you organize and name your files.
Have a look at this gif from the extension readme to see what it can do for you:
What differentiates this extension from the CRS extension is the fact that you can define your own folder structure. I tried that myself for the following repository:
After I use the command “ES: Create All Folder Structure”, my project looks like this. It created new folders for my project.
After that, I used the command “ES: Reorganize files” to move the files into the correct folders. For some reason, it did not work. I tried it again with a very simple project (I only used “AL: Go!”) but it still did not work. The problem may be the extension or the person sitting in front of the screen.
I think this is a really useful extension if you want to create your own folder structures in AL projects. Give it a try!
16. Márton Sági – Dynamics NAV C/Side Theme 😐
Márton seems to have a lot of time or he is very efficient as he is already the author of the AL Object Designer and AL Studio. He created a theme to change the appearance of VS Code. When you use the theme, VS Code will look like in the picture below, taken from the extension description.
17. Lukas Struckl – NDP AL Theme 😐
Not much to say about this extension. If you use it, VS Code will look like you can see on the picture below:
18. MSN Raju – AL Productivity Tools 🙂
Unfortunately, this extension does not have a lot of pictures or gifs to describe its features, but it does have some quite cool things to offer. Use the command “Fix AL CodeCop Issues” to apply the fixes listed below. I am not sure what “Type definition (colon)” does, but yea. I guess I understand what it should do, but I could not make it do it, haha.
I created a small example to use the feature “Fix AL CodeCop Issues”. This is my pageextension before using the command:
After using the command…
My file looks like this. Procedures, triggers and variables are reordered. The casing of key words was fixed.
If you need to create a Guid, there is also a command that can insert a Guid for you. In below screenshot the Guid in the red rectangle was inserted.
By using the command “MSN: Export Diagnostics” a diagnostics file in xlsx format will be created in your project:
There are also some commands for file naming and tooltips, but I am not too excited about them because similiar commands already exist in the CRS extension and AZ AL Dev Tools.
My conclusion: Try this extension. It is definitely worth it!
19. Alna Business – ABS C/AL Tools Extension 😐
Once again: I am not interested in C/SIDE anymore, so I did not want to try this app. I do not think it is of much use these days anymore.
20. MSN Raju – Fix AL File Names 🙁
Waldo’s CRS Extension already covers the same functionalities, so I recommend to use the CRS extension instead.
21. fluxxus.nl – ATDD.TestScriptor 🙂
Wow, this name is definitely a tongue breaker. Everyone who is into testing should definitely check out the extension. Have a look at the screenshot below from the extension readme to see how the extension can help you. I think this should be enough to make you curious and check out the readme of the extension yourself.
22. Dynasist Solutions Kft. – AL Studio 🙂
This extension is like the AL Object Designer on steroids. Really hard to describe as it has a lot of features, including a translation manager, a workspace overview and object browser + editor. Please note that there is a free version and a premium version of this app. Check out their Youtube Channel to see the AL Studio in action.
My opinion: A very interesting extension with a lot of awesome features. I personally do not use it as it loads too slow for the way I work. Try it yourself, you won’t regret it.
That’s it. I hope you learned something new in this blogpost. I always appreciate if you have some feedback regarding these extensions or if you think that some extensions are missing.
34 thoughts on “My 8 Favorite Rather Unknown VS Code Extensions for AL”
Thanks! I created my @code extension when al was a kid ☺️. At those days there was no embedded action images preview , so it made sense to at least suggest image with some ai. But after some builds image preview appeared and I found that quicker to use it, rather then iAL.
I alrighty thought something like this and I guess something like this happened to other extensions as well. AL and BC evolve and once really cool extensions are no longer needed.
If the images preview is not enough, there is also the Action images browser in AZ AL Dev Tools.
The “Remove unused variables” feature also exists in Andrzej Zwierzchowski’s AZ AL Dev Tools/AL Code Outline.
Oh, indeed. Good addition, thank you.