2.1 Implicit Storage
MS-VBAL explicitly presumes an implementation-dependent storage mechanism outside the scope of its own specification. RD-VBAL explicitly specifies these mechanisms. This decouples the language semantics from implementation-dependent storage.
The environment host is responsible for configuring the implicit storage of the host VBA environment, and for loading any application settings and additional workspace resources into the runtime environment (see RD-VBAL §2.3.1 Composition Root).
2.1.1 Application Settings
MS-VBAL addresses legitimate application configuration concerns through a get-only API exposed in the standard library:
| Function | Specification | SDK member |
|---|---|---|
GetAllSettings |
MS-VBAL §6.1.2.8.1.7 GetAllSettings | IStdInteractionModule.StdInteraction__GetAllSettings |
GetSetting |
MS-VBAL §6.1.2.8.1.10 GetSetting | IStdInteractionModule.StdInteraction__GetSetting |
RD-VBA maintains backward compatibility with an implementation of this API backed by the Windows Registry. RD-VBA application settings are not inherently constrained to the Windows Registry, however.
RD-VBA therefore adds functions managing workspace application settings, using a similar API:
| Function | Specification | SDK member |
|---|---|---|
🧩 GetJsonSettings |
RD-VBAL §6.1.2.8.1.7.1 GetJsonSettings | IStdInteractionModule.StdInteraction__GetJsonSettings |
🧩 GetJsonSetting |
RD-VBAL §6.1.2.8.1.10.1 GetJsonSetting | IStdInteractionModule.StdInteraction__GetJsonSetting |
Whether any standard library calls implicate actual or simulated Windows Registry reads is implementation-dependent. Such calls may behave differently on different platforms. This remains compliant with the relevant MS-VBAL sections as specified.
Important
The host environment may expose configuration settings that set the implicit storage of GetAllSettings and GetSetting to workspace application settings. These functions then behave identically to GetJsonSettings and GetJsonSetting, respectively.
2.1.1.1 Workspace Application Settings
The MS-VBAL-specified settings API (GetSetting, GetAllSettings) could serve workspace application settings unchanged. RD-VBAL nevertheless defines separate functions (GetJsonSettings, GetJsonSetting), to maintain backward compatibility without modifying any existing signature.
As a result:
- the legacy
GetSetting/GetAllSettingsAPI maintains its MS-VBA behavior; - RD-VBA applications can use the
GetJsonSettingsAPI, which brings application configuration on par with any other managed (.NET) configuration scheme.
| Rule | Description |
|---|---|
| Location | A workspace may include one or more appsettings.json file(s), at its root or under any of its subfolders. |
| File name | A configuration file may be named differently: appsettings.json is a language platform default, and this default is configurable. |
| Binding | The application host (rdc.exe) is responsible for binding the workspace configuration as the application is composed, before it starts executing. |
Workspace application settings are built on a .NET managed IConfigurationBuilder, and have all of its capabilities.
The ErlLineNumbering environment setting is bound from appsettings.json, with the rest of the runtime profile (see RD-VBAL §6.1.2.7.1.14 Erl).
⏮️ RD-VBAL §2.0.2 Client/Server Capabilities | ⏭️ RD-VBAL §2.2 RDPROJ Structure