left-code.BcSymbols
0.1.0
dotnet tool install --global left-code.BcSymbols --version 0.1.0
dotnet new tool-manifest
dotnet tool install --local left-code.BcSymbols --version 0.1.0
#tool dotnet:?package=left-code.BcSymbols&version=0.1.0
nuke :add-package left-code.BcSymbols --version 0.1.0
BcSymbols
Deterministic AL symbol restore for Microsoft Dynamics 365 Business Central.
BcSymbols is a .NET CLI tool that restores AL symbols into .alpackages/ using the same public symbol feeds used by the VS Code AL extension.
It behaves similarly to:
dotnet restorenpm installcargo build
…but for Business Central AL symbols.
Features
- Restores Microsoft and AppSource AL symbols
- Reads dependencies from
app.json - Downloads and extracts
.apppackages - Writes symbols into
.alpackages - Recursive transitive dependency restoration
- Deterministic package resolution
- Stable locked restore mode
- Floating latest restore mode
- Supports custom output directories
- Supports custom
app.jsonpaths
Installation
.NET Tool
dotnet tool install --global BcSymbols
Verify installation
bcsymbols --help
Usage
Restore symbols
bcsymbols restore
Restores symbols using deterministic locked dependency resolution.
Restore latest dependency graph
bcsymbols restore --latest
Uses floating dependency resolution and restores the newest compatible graph.
Restore from custom app.json
bcsymbols restore path/to/app.json
Restore to custom output directory
bcsymbols restore --output ./symbols
Restore Modes
Default restore
bcsymbols restore
Behavior:
- Stable deterministic restore
- Prefers versions declared in
app.json - Constrains Microsoft packages by Business Central major version
- Produces reproducible dependency graphs
Comparable to:
dotnet restore
npm ci
Floating restore
bcsymbols restore --latest
Behavior:
- Restores latest compatible dependency graph
- Updates Microsoft and partner packages together
- Uses recursive dependency graph as authoritative source
Comparable to:
npm install
Public Symbol Feeds
Microsoft symbols
https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/MSSymbolsV2/nuget/v3/index.json
AppSource / Partner symbols
https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/AppSourceSymbols/nuget/v3/index.json
How It Works
BcSymbols generates deterministic package IDs compatible with Business Central symbol conventions.
Example:
Microsoft.BaseApplication.symbols.<AppId>
Resolution uses:
- normalized publisher
- normalized app name
- AL AppId GUID
The dependency graph is restored recursively using:
app.jsonroot dependencies- NuGet nuspec transitive dependencies
- NuGet v3 metadata feeds
Example Workflow
cd MyBcProject
bcsymbols restore
Result:
.alpackages/
Microsoft_System_26.0.0.0.app
Microsoft_Base Application_26.0.0.0.app
MyDependency_1.2.0.0.app
Roadmap
Planned improvements:
- Semantic version range support
- Dependency conflict resolution
- Local metadata cache
- Authenticated feeds
Tech Stack
- .NET 8
NuGet.ProtocolSystem.CommandLine
Architecture Notes
BcSymbols evolved from a simple symbol downloader into a recursive NuGet-backed AL package manager with:
- deterministic package resolution
- recursive dependency traversal
- transitive graph restoration
- NuGet v3 metadata integration
The recursive graph now operates primarily in NuGet dependency space rather than reconstructing package identities manually.
License
MIT License
Contributing
Issues and pull requests are welcome.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|
Initial public preview release with recursive AL symbol restore.