Reference manual

Objects page

Solution page

The Solution page shows what the open workspace consists of: every module Prism resolved, in dependency order, with its publisher, version, role and origin, and a dashboard with the workspace's health issues, object counts, AL settings and Git status. Select a module to see its details, its dependencies, the modules that use it, its namespaces and its translations. Use it to size up a solution and to check that every dependency resolved as you expect.

Opening it

  • Select Solution in the rail of the Workspace window.
  • Right-click an object or a module in the Objects panel and select Go to Module: the page opens with that module selected.

To open every workspace on this page, set Start action to Show solution view on the Settings page.

Prism for AL Solution page with the modules of a workspace, the object metrics and the AL Settings expander
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
The Solution page with no module selected.
# Name Description
1 Search Filters the modules by publisher, name, version and module id. A version range such as 1.0..2.0 (or 1.0.. or ..2.0) keeps the modules whose version lies in the range; add text to the range to match both.
2 # The module's place in the Topological order of the module dependencies.
3 Publisher The publisher, from the module's manifest.
4 Name The module name. A red symbol after it means one or more of its dependencies did not resolve: hover over it to see whether symbols are missing (download symbols and reload the workspace) or the dependencies were not found in the workspace.
5 Version The module's version.
6 Constraint The version the other modules of the workspace require of it, combined, such as ≥23.0.0.0.
7 Role The kind of module: PLATFORM, SYSTEM (System and System Application), BASE (Base Application), APP (Application), TEST or EXT (an extension). Hover over a chip for its description.
8 Origin Where the module comes from: a workspace folder or a package. See Origin column.
9 Total object count The number of objects in all resolved modules and the number of object types.
10 Object count per object type The number of objects of each type; extension types beside the type they extend.
11 Export solution metrics Saves the solution metrics to an Excel (.xlsx) file, for example to estimate the size of a customer solution.
12 Explore file system Opens the File explorer window on the workspace folders and the packages the workspace uses.
13 Reveal workspace Shows the workspace folder or .code-workspace file in File Explorer.
14 Reveal selected item Scrolls the list to the selected module, when it is out of view. Available while a module is selected.
15 AL Settings The AL settings of the workspace, cascaded from your user settings and the workspace settings. See AL Settings.

Further columns to the right of Origin count, per module, the files with errors, the candidate discoveries, the dependencies, the modules that use it and the translation files that target it; hover over a column header for its meaning. The error column is shown only when files have errors; see Parse errors. Select a module to show its tabs on the right, starting with the Module tab.

Origin column

The Origin column shows a symbol for where Prism found the module. Hover over it for the same description.

Symbol Meaning
Source symbolAn app.json file in a workspace folder.
Source symbol, greenA workspace folder under Git version control that tracks a remote repository.
Source symbol, caution colorA workspace folder under local Git version control only.
Package symbolAn .app file from the package cache.
Package symbol, caution color A package only search depth All loads, as a dependency of a dependency. “AL: Download symbols” in Visual Studio Code does not update it, so it may be outdated.
Symbols symbol, caution colorA package without AL source files: Prism has its symbols but not its code.

Dashboard

With no module selected, the right side of the page shows the dashboard of the whole workspace, as expanders:

  • Diagnostics (“Workspace health issues”), when there are any. See below.
  • Object metrics: the object counts, legend rows 9 and 10 above.
  • AL Settings: the settings from your user settings and the workspace. See AL Settings.
  • Git, when all modules of the workspace are in one Git repository. See Git.
The Diagnostics expander.
# Row Description
1 Unresolved modules The number of dependencies Prism could not resolve. Select the link for the Modules tab. When the workspace also has runtime packages, a note explains that Prism cannot read them, as they are encrypted.
2 Compilation unit errors The number of files with errors. Select the link for the Compilation units tab.
3 Graph translation syntax errors, Graph translation name resolution errors Internal Prism for AL errors while building the code graph. Select the link for the CodeGraph tab.
4 Nested project advisories app.json files found inside workspace folders. Prism leaves these nested projects out of the workspace. Each is listed with its severity, its path, which you can select to show it in File Explorer, and a description.
5 Missing package directories Folders that an al.packageCachePath setting names but that do not exist. Prism read no packages from them, so the dependencies expected there are unresolved, or come from the package cache when Search Package Cache is on.
6 Modules not updated by “AL: Download symbols” The modules that search depth All loaded as dependencies of dependencies. “AL: Download symbols” in Visual Studio Code downloads only direct dependencies, the dependencies from app.json's application and platform, and propagated dependencies, so nothing updates these modules and they may be outdated.

Module tab

The Module tab shows the selected module's details: mostly from its manifest, but also from Prism's module resolution, its object metrics and its settings files.

Prism for AL Solution page with a module selected and its Module tab
1 2 3 4 5 6 7
The Module tab of a selected module.
# Name Description
1 Discovery Where Prism found the module that it uses: the path, which you can select to open, and, for a package, which al.packageCachePath setting led to it. To see the other versions Prism considered, use the Discovery tab.
2 Core, Environment, Code and Miscellaneous The module data from app.json for a workspace folder, or from NavxManifest.xml for a package (.app file).
3 Object metrics The number of objects of each type in the module.
4 Module graph Shows the Module graph page with the module highlighted.
5 Collapse Collapses all expanders.
6 Expand Expands all expanders.
7 Close module view Closes the module's tabs and shows the dashboard again, with no module selected.

Below Object metrics, more expanders appear for some modules only, so the screenshot does not show them:

  • AL Settings, for a module from a workspace folder. See AL Settings.
  • Launch Settings, when the module folder has a .vscode\launch.json file. See Launch Settings.
  • Directory App Props, when the module folder or a folder above it has a Directory.App.Props.json file. See Directory App Props.
  • Git, when the workspace spans more than one Git repository, for the module's own repository. See Git.

AL Settings

AL Settings shows the AL settings Prism reads, layer by layer: your Visual Studio Code user settings, the workspace settings and, on a module's tab, the module's own settings. On the dashboard it shows the user and workspace layers. It is collapsed until you expand it.

The AL Settings expander.
# Name Description
1 Show all settings Off by default: only the settings with a value are listed. On: settings with no value are listed as well.
2 Search Filters the settings.
3 Group A heading over a group of related settings.
4 Setting The setting's name, such as al.packageCachePath, with a row below for each layer that sets it: user, workspace and module.
5 Overriding layer A check mark after a layer's name marks the value in effect, which overrides the layers above it, such as “This workspace value overrides the user value”. The overridden values are dimmed.
6 Value A list is shown as chips: over eight items, the first five and Show N more (then Show fewer). An object is shown as a table. A value nested too deep ends in “N more not shown here; the full value is in the settings file”.

For al.packageCachePath, an active row shows the value Prism loaded when it opened the workspace; a change to it takes effect when you reload the workspace.

Launch Settings

Launch Settings (“Visual Studio Code launch configurations”) shows the configurations in the module's .vscode\launch.json, the ones Visual Studio Code uses to publish and debug the app. Prism watches the file and shows a change within a second. It is collapsed until you expand it.

The Launch Settings expander.
# Name Description
1 File The path of launch.json. Select it to open the file in the program Windows associates with it. If the file cannot be read, a red banner gives the reason, such as “Invalid JSON”.
2 Show all settings Off by default. On: each configuration also lists the properties Prism does not show by default, dimmed and in italics.
3 Configuration A launch configuration, by its name.
4 Properties The configuration's properties that are set, of type, request, environmentType, environmentName, server, serverInstance, port, authentication, startupObject (type and id), breakOnError, launchBrowser, enableLongRunningSqlStatements and enableSqlInformationDebugger.

Directory App Props

Directory App Props (“Inherited variables and properties from Directory.App.Props.json”) shows the Directory.App.Props.json file nearest to the module folder, in the folder itself or a folder above it, whose variables and properties the module's app.json inherits. It is collapsed until you expand it.

The Directory App Props expander.
# Name Description
1 File The path of the file. Select it to open the file. If the file cannot be read, a red banner gives the reason.
2 Search Keeps the variables and properties whose name or value contains the text.
3 Variables The file's variables, by name, with their values.
4 Properties The app.json properties the file sets, with their values.

Git

Git (“Version control metadata”) shows the state of a Git repository as a timeline, newest at the top. It shows on the dashboard when all modules are in one repository, and on each module's tab when the workspace spans several repositories. It is expanded by default.

The Git expander.
# Name Description
1 Uncommitted changes Shown when the working tree has changes: the number of added (+), updated (~) and deleted (-) files, and the commits ahead of and behind the remote branch.
2 HEAD The commit checked out, in bold, with a chip naming the branch.
3 Commit One of the ten most recent commits: its subject, with an issue reference such as (#3789) kept in view, the author and how long ago. The author and time are left out where they repeat the row above. Hover over a row for the subject, the full SHA, the author and the exact time.
4 Copy commit SHA to clipboard Appears on the row under the pointer. Copies the commit's SHA.

While Prism reads the history, three placeholder rows hold its place. When there is no history to show, the expander shows the branch name, the short SHA of HEAD with a copy button, and its commit message.

Discovery tab

The Discovery tab lists every Package file and workspace folder that Prism for AL considered for the module while loading, and shows which one it chose.

Prism for AL Discovery tab of a module with its candidate packages
1 2 3
The Discovery tab.
# Name Description
1 Go Select the link symbol, or double-click the row, to show the Discovery page with the module selected.
2 Used Marks the candidate that module resolution chose.
3 Path The path of the .app file or workspace folder.

Usings tab

The Usings tab lists the modules the selected module depends on, one row per dependency.

Prism for AL Usings tab of a module with its dependencies
1 2 3 4 5 6 7
The Usings tab.
# Name Description
1 Go Select the link symbol, or double-click the row, to select the dependency in the module list.
2 Publisher The publisher of the dependency.
3 Name The name of the dependency.
4 Version The version of the dependency that Prism resolved.
5 Constraint The version the selected module requires of the dependency.
6 Status Empty when the dependency resolved. Anything here is a module resolution error; hover over it for the details.
7 Kind Where the dependency comes from:
  • Platform: the platform property in app.json.
  • Application: the application property in app.json.
  • Propagated: a dependency passed on by another dependency, typically the one in the application property.
  • Empty: an ordinary dependency from the dependencies property in app.json.

Usages tab

The Usages tab lists the modules that depend on the selected module, one row per module.

Prism for AL Usages tab of a module with the modules that depend on it
1 2 3 4
The Usages tab.
# Name Description
1 Go Select the link symbol, or double-click the row, to select the depending module in the module list.
2 Publisher The publisher of the depending module.
3 Name The name of the depending module.
4 Version The version of the depending module.

Namespaces tab

The Namespaces tab lists the namespaces declared in the selected module's files, one row per namespace.

Prism for AL Namespaces tab of a module with its namespaces
The Namespaces tab.
# Name Description
1 Go Select the link symbol, or double-click the row, to show the namespace on the Namespaces page.
2 Namespace The full namespace name.

Translations tab

The Translations tab lists the XLIFF files that translate something in the selected module, one row per combination of file, source language and target language.

Prism for AL Translations tab of a module with its XLIFF files
1 2 3 4 5 6
The Translations tab.
# Name Description
1 Go Select the symbol, or double-click the row, to show the translation file in File Explorer. Works for XLIFF files in a workspace folder, not for those inside .app files.
2 External Marks a translation file that belongs to another module.
3 Origin The module that contains the XLIFF file: Internal for the selected module, otherwise the name of the owning module.
4 Source The source language of the translation.
5 Target The target language of the translation.
6 File The name of the XLIFF file.