Compile AL Extension(s) for Business Central using altool.exe from the NuGet package.
Property
Value
Task name (Azure DevOps)
ALOpsAppCompiler@3
Action name (GitHub)
alops-appcompiler
Version
3.476.10779
Category
Utility
OS requirement
Both
Preview
yes
Compile Business Central extension(s) from AL code using altool.exe (microsoft.dynamics.businesscentral.development.tools NuGet package). Supports serial and parallel compilation modes.
Fail the task on any compiler diagnostic (error, warning, or info-level message). Stricter than failonwarnings. In Parallel mode this also raises the compile log level so info diagnostics are captured.
ignore_pragma
Boolean
no
false
Both
Silently skip diagnostics suppressed via #pragma warning disable in source.
enable_external_rulesets
Boolean
no
true
Both
Allow rulesets to import other rulesets via include/exclude paths.
Download missing MS symbols from the MSSymbols NuGet feed.
force_download_mssymbols
Boolean
no
false
Both
Delete all Microsoft_*.app files from the symbol cache before resolving. Use in multi-localisation pipelines where the same cache path is reused across countries.
bc_localization
Text
no
W1
Both
Business Central country code for MS symbol resolution.
bc_version
Text
no
(empty)
Both
BC version filter in Major.Minor format (e.g. '25.0'). Special values 'NextMajor' and 'NextMinor' build against the latest Microsoft insider release (requires accepting the insider EULA — set automatically). Auto-detected from app.json when empty.
Override showMyCode in app.json (true/false/empty=keep).
internalsvisibleto
Text
no
(empty)
Both
Comma-separated list of app IDs to add to internalsVisibleTo.
preprocessorsymbols
Text
no
(empty)
Both
Comma-separated list of preprocessor symbols for conditional compilation.
updateruntime
Text
no
(empty)
Both
Override the runtime field in app.json (e.g. "15.0"). Pass LATEST to auto-resolve via altool GetLatestSupportedRuntimeVersion (requires bc_version to be set). Empty = keep.
updateplatform
Text
no
(empty)
Both
Override the 'platform' version in app.json before compilation, e.g. "26.0.0.0". Also updates a governing directory.app.props.json when it defines 'platform'. Empty = keep.
updateapplication
Text
no
(empty)
Both
Override the 'application' version in app.json before compilation, e.g. "26.6.0.0". Also updates a governing directory.app.props.json when it defines 'application'. Empty = keep.
rep_allowdebugging
Text
no
(empty)
Both
Override resourceExposurePolicy.allowDebugging in app.json. Values: Enable / Disable / empty=keep. Mutually exclusive with showMyCode (REP wins on runtime >= 8).
rep_allowdownloadingsource
Text
no
(empty)
Both
Override resourceExposurePolicy.allowDownloadingSource in app.json. Values: Enable / Disable / empty=keep.
rep_includesourceinsymbol
Text
no
(empty)
Both
Override resourceExposurePolicy.includeSourceInSymbolFile in app.json. Values: Enable / Disable / empty=keep.
applicationinsightskey
Text
no
(empty)
Both
Application Insights Instrumentation Key (GUID) or full Connection String to write to app.json. Pass NONE to remove. Empty = keep.
suppresswarnings
Text
no
(empty)
Both
Comma-separated list of warning codes to write to suppressWarnings in app.json (e.g. AL0432,AL0606). Pass NONE or DISABLED to remove. Empty = keep.
allowed_publisher_names
Text
no
(empty)
Both
Whitelist of allowed app publishers. The task fails for any project whose publisher is not on this list. Empty = no enforcement.
-task:ALOpsAppCompiler@3displayName:'ALOpsAppCompiler'inputs:altool_package_version:17.0.30.49729-beta# Version of the microsoft.dynamics.businesscentral.development.tools NuGet package. Pin to a specific version for reproducible builds. $(altool_package_version)compilation_mode:Serial# Serial: compiles one app at a time. Parallel: uses workspace compile for concurrency. $(compilation_mode)alsourcepath:# Root folder searched recursively for app.json files. $(alsourcepath)alcachepath:# Folder containing symbol .app files. Defaults to alsourcepath when empty. $(alcachepath)maxcpucount:# Maximum concurrent compilations in parallel mode. Defaults to logical processor count. $(maxcpucount)alc_continue_build_on_error:False# Pass --continueBuildOnError to alc. Keeps compiling remaining files when a single file errors. $(alc_continue_build_on_error)additional_probing_paths:# Extra symbol probing paths passed to alc. Comma-separated. $(additional_probing_paths)generate_report_layouts:True# Generate report layout files during compilation. $(generate_report_layouts)appversiontemplate:1.0.*.0# Four-part version template. * = build number, ? = keep original, A = application field. $(appversiontemplate)updatebuildnumber:True# Update the CI build number with the compiled app version. $(updatebuildnumber)appfilenametemplate:# Template for the output .app filename. Tokens: %APPNAME%, %PUBLISHER%, %VERSION%. $(appfilenametemplate)alcodeanalyzer:# Comma-separated list of code analyzer DLL paths. $(alcodeanalyzer)ruleset:# Path to a .ruleset.json file for code analysis. $(ruleset)failonwarnings:False# Treat compiler warnings as errors. $(failonwarnings)fail_on_any:False# Fail the task on any compiler diagnostic (error, warning, or info-level message). Stricter than failonwarnings. In Parallel mode this also raises the compile log level so info diagnostics are captured. $(fail_on_any)ignore_pragma:False# Silently skip diagnostics suppressed via `#pragma warning disable` in source. $(ignore_pragma)enable_external_rulesets:True# Allow rulesets to import other rulesets via include/exclude paths. $(enable_external_rulesets)auto_resolve_ms_symbols:True# Download missing MS symbols from the MSSymbols NuGet feed. $(auto_resolve_ms_symbols)force_download_mssymbols:False# Delete all `Microsoft_*.app` files from the symbol cache before resolving. Use in multi-localisation pipelines where the same cache path is reused across countries. $(force_download_mssymbols)bc_localization:W1# Business Central country code for MS symbol resolution. $(bc_localization)bc_version:# BC version filter in Major.Minor format (e.g. '25.0'). Special values 'NextMajor' and 'NextMinor' build against the latest Microsoft insider release (requires accepting the insider EULA — set automatically). Auto-detected from app.json when empty. $(bc_version)ms_symbols_feed:https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/MSSymbols/nuget/v3/index.json# NuGet v3 service index URL for the MSSymbols feed. $(ms_symbols_feed)ms_symbols_pat:# PAT for authenticated MSSymbols feed access. $(ms_symbols_pat)accept_insider_eula:False# Accept the Microsoft BC insider EULA for NextMajor/NextMinor. $(accept_insider_eula)auto_resolve_appsource_symbols:True# Resolve missing ISV symbol dependencies from the AppSourceSymbols feed. $(auto_resolve_appsource_symbols)appsource_symbols_feed:https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/AppSourceSymbols/nuget/v3/index.json# NuGet v3 service index URL for the AppSourceSymbols feed. $(appsource_symbols_feed)appsource_symbols_pat:# PAT for authenticated AppSourceSymbols feed access. $(appsource_symbols_pat)printappmanifest:True# Print the app.json contents to the log before compilation. $(printappmanifest)outputalclogs:False# Output detailed ALC compiler logs. $(outputalclogs)alc_error_log:False# Emit per-app `<AppName>_ALCErrorLog.txt` next to the compiled .app. $(alc_error_log)publishartifact:True# Publish the compiled .app as a build artifact. $(publishartifact)publishxlif:False# Publish generated XLIF translation files (*.g.xlf) as a build artifact named 'ALOpsXLIF'. Enables the 'TranslationFile' compiler feature. $(publishxlif)outputpath:# Folder where compiled .app files are written. When empty, defaults to the CI platform artifact directory. $(outputpath)track_source_build_metadata:True# Inject build and source metadata into app.json. Requires runtime >= 12.0. $(track_source_build_metadata)showmycode:# Override showMyCode in app.json (true/false/empty=keep). $(showmycode)internalsvisibleto:# Comma-separated list of app IDs to add to internalsVisibleTo. $(internalsvisibleto)preprocessorsymbols:# Comma-separated list of preprocessor symbols for conditional compilation. $(preprocessorsymbols)updateruntime:# Override the runtime field in app.json (e.g. "15.0"). Pass LATEST to auto-resolve via altool GetLatestSupportedRuntimeVersion (requires bc_version to be set). Empty = keep. $(updateruntime)updateplatform:# Override the 'platform' version in app.json before compilation, e.g. "26.0.0.0". Also updates a governing directory.app.props.json when it defines 'platform'. Empty = keep. $(updateplatform)updateapplication:# Override the 'application' version in app.json before compilation, e.g. "26.6.0.0". Also updates a governing directory.app.props.json when it defines 'application'. Empty = keep. $(updateapplication)rep_allowdebugging:# Override resourceExposurePolicy.allowDebugging in app.json. Values: Enable / Disable / empty=keep. Mutually exclusive with showMyCode (REP wins on runtime >= 8). $(rep_allowdebugging)rep_allowdownloadingsource:# Override resourceExposurePolicy.allowDownloadingSource in app.json. Values: Enable / Disable / empty=keep. $(rep_allowdownloadingsource)rep_includesourceinsymbol:# Override resourceExposurePolicy.includeSourceInSymbolFile in app.json. Values: Enable / Disable / empty=keep. $(rep_includesourceinsymbol)applicationinsightskey:# Application Insights Instrumentation Key (GUID) or full Connection String to write to app.json. Pass NONE to remove. Empty = keep. $(applicationinsightskey)suppresswarnings:# Comma-separated list of warning codes to write to suppressWarnings in app.json (e.g. AL0432,AL0606). Pass NONE or DISABLED to remove. Empty = keep. $(suppresswarnings)allowed_publisher_names:# Whitelist of allowed app publishers. The task fails for any project whose publisher is not on this list. Empty = no enforcement. $(allowed_publisher_names)allowed_publisher_separator:,# Separator used to split `allowed_publisher_names`. $(allowed_publisher_separator)