When you develop an extension with Visual Studio Code and the AL language, in the app.json file you can specify the target level of your extension. The available options are as follows:
Here (in order of visibility):
- Personalization: it’s the lowest current level, only allows for inclusion of UI objects like Profiles/PageCustomizations.
- Extension: it’s the default level when you create an extension for Dynamics 365 Business Central. This is used for an extension that targets the online world (only FunctionVisibility = External, no DotNet variables, no Files Management but use Stream instead).
- Solution: Unused at the moment, this could be used in the future to encompass the capabilities of ‘Embed’ apps. Actually it does nothing but unfortunately it compiles without errors 🙂
- Internal: This is the highest level and it targets the on-premise world (maximum visibility, full DotNet support, File Management, access to all Virtual Tables like Files etc.).
Also for the on-premise world, I recommend not to use Solution as target level for your .app project. It compiles but you can have errors when deploying the extension.