A common question asked these days is why there are different versions of the AL Extensions for Visual Studio Code. With this post I try to explain what the differences are and what version you should choose when developing Extensions v2.
In fact there is just one AL Extensions, shipped in different versions. At the moment of writing these versions are actual:
Let me first explain how these versions are related. The first thing you need to understand is that the AL Extension is an evolving product. As with any other software product, there are many builds created during the developing phase. The complicating factor is that the AL Extension is used for two platforms: the cloud platform (Dynamics 365 for Financials) and on-premise (Dynamics NAV 2018).
Let’s first look at the cloud platform, Dynamics 365 for Financials, and forget about Dynamics NAV 2018 for a moment.
Every month the Dynamics 365 for Financials platform is updated. Part of this update is a new version of the AL Extension with bugfixes and new features. Any new version of the AL Extension is first published as a monthly development preview. About one month later, the Dynamics 365 for Financials platform will be updated to the monthly development preview of one month earlier.
At the moment that the Dynamics 365 for Financials platform is updated, the AL Extension for VS Code is also published on the VS Code extensions marketplace. So, one month after the development preview, that version ends up in the VS Code extensions marketplace.
To prove that, take a look at the current version in the VS Code extensions marketplace.
As you can see, the current version is 0.11.14434. The description also makes clear that this is language extension is for Dynamics 365 for Financials.
Now take a look at the monthly development preview of November. It has the same version. 0.11.14434
Ok, there is some mixing in the naming, it is called NAV Development Preview instead of Dynamics 365 Development Preview. And is it Development Preview or Developer Preview? Whatever… eventually it ends up to be one happy family.
At this moment we also have the development preview for December. This is version 0.12.15359, which will become the version for Dynamics 365 for Financials in January. Here you see this version installed in VS Code:
What is a little bit confusing here, is that the description tells you that this is for Dynamics NAV instead of Dynamics 365 for Financials. On the other hand, it makes sense when you realize that this AL Language extension is shipped as a docker container, which is in fact an on-premise version of Dynamics NAV.
So, what about the release of Dynamics NAV 2018? That comes with version 0.12.15355, which is a version somewhere in between the November and the December preview update.
Dynamics NAV 2018 will not see any platform updates until the release of Dynamics NAV 2018 R2. New features for AL Extension development will be rolled out every month to Dynamics 365 for Financials, but you won’t see them coming to Dynamics NAV 2018. The usual Cumulative Updates will contain bugfixes, but it’s not the plan to turn those updates into platform updates. So be prepared that the first cumulative update for NAV 2018 will probably contain a newer build of the AL Language Extension, but that will not include the updates of the development preview. New AL Language Extension features will come to NAV 2018 with the release of NAV 2018 R2.
Which bring us to versioning.
The version of the AL Language Extension is expressed in major.minor.build format. Every monthly preview will increase the minor version, e.g. 0.13 for the January update, 0.14 for February, etc.
NAV 2018 was shipped with 0.12.15355. A few days later, the monthly preview for December was released with 0.12.15359. The major.minor part of the version is the best indicator of compatibility. In other words, the version of the December update can be used with NAV 2018.
However, the January update will be shipped with version 0.13, which means that it cannot be used with NAV 2018. What about the cumulative updates for NAV 2018? They will continue to have newer builds but the major.minor version will remain 0.12. So you can expect to see 0.12.xxxxx builds coming with cumulative updates while at the same time the version for Dynamics 365 increases to 0.13, 0.14, etc. When NAV 2018 R2 is release it will get the actual version of that moment.
In other words, the Dynamics 365 cloud platform gets new features every single month while the on-premise platform has to wait for the next major release.
A frequently asked question is why future monthly updates will not work on NAV 2018. The reason is that monthly updates can contain breaking changes. For example, there can be new features introduced to the developer endpoint (port 7049). Such features will not be rolled out with cumulative updates, you have to wait for NAV 2018 R2.
To find out the exact build number of your NAV 2018 installation you could look at the version of the file Microsoft.Dynamics.Nav.CodeAnalysis.dll in the RoleTailored Client folder of your installation. The version of the AL Language Extension will correspond with this version.
Every VS Code Extension has an identifier. The identifier of the AL Language Extension published at the marketplace is ms-dynamics-smb.al. The identifier of the on-premise version is Microsoft.al. The identifiers are visible in VS Code:
It is possible to have both installed at the same time, but you can’t enable both at the same time. The reason is that both language extensions work with .al files. And you can only have one language extension enabled for a certain file type.
Because NAV 2018 and the monthly development preview are shipped with the same identifier, you can only have one of these versions installed. You must make sure to choose the correct version, based on the platform you are developing on!
When you develop an extension for Dynamics 365, you have two options: create a sandbox on the current version of Dynamic 365 for Financials or use the latest monthly development preview.
To create a sandbox environment, follow the steps as laid out here. For this sandbox, you can use the AL Language Extension from the VS Code marketplace.
To develop for a future version of Dynamics 365, you should use the development preview. The best way to get these is to download a docker image (more info) or to spin up an Azure VM by using this template: http://aka.ms/navdeveloperpreview.
Theoratically, you could also develop an extension for Dynamics 365 using an on-premise NAV 2018 environment. However, I recommend to go with the sandbox or the development preview.
When you develop an extension for on-premise NAV 2018, you should use the AL Language extension that is shipped with the DVD.
Let’s summarize the different versions and where to find more information.