Skip to content
Microsoft Build Accelerator
Branch: master
Clone or download
almiliMSFT Discard reported accesses on non-canonical paths (#627)
Concretely, discard observed accesses that have a single MacLookup report on a path that contains directory symlinks.

 - observed accesses computed here should only contain fully expanded paths to avoid ambiguity;
 - on Mac, all access reports except for MacLookup report fully expanded paths, so only MacLookup paths need to be curated

Latest commit 469878b Jul 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Initial sync Mar 28, 2019
Documentation Fix broken documentation link. (#626) Jul 19, 2019
Examples Remote telemetry for ContentStoreApp (#503) Jun 28, 2019
Private DropDaemon refactoring (#528) Jul 18, 2019
Public Discard reported accesses on non-canonical paths (#627) Jul 19, 2019
Shared New Public LKG 0.1.0-20190716.5 Jul 18, 2019
third_party Initial sync Mar 28, 2019
.editorconfig Initial sync Mar 28, 2019
BuildCache.cmd Initial sync Mar 28, 2019
BuildCacheDefault.json Initial sync Mar 28, 2019
BuildCacheDefaultNetCore.json Initial sync Mar 28, 2019
BuildCacheOverride.json Initial sync Mar 28, 2019
CODEOWNERS Adding Code owners (#133) Apr 12, 2019 Initial sync Mar 28, 2019
CreatePr.cmd Update CreatePr helper for github (#58) Mar 29, 2019
LICENSE Restoring licence file Apr 9, 2019 Minor formatting in (#399) Jun 3, 2019
RunCheckInTests-Test.cmd Initial sync Mar 28, 2019
RunCheckInTests.cmd StatusMessge -> StatusMessage (#554) Jul 5, 2019
SlimBuildForMacTests.cmd Initial sync Mar 28, 2019
buddy.cmd Initial sync Mar 28, 2019
bxl.cmd Initial sync Mar 28, 2019 Change BuildXLLkgVersion.cmd to use win-x64 instead of net472 (#344) May 21, 2019
cgmanifest.json Initial sync Mar 28, 2019
clean.bat Initial sync Mar 28, 2019
config.dsc Enable the MSBuildResolver to work under dotnet core (#561) Jul 17, 2019
config.microsoftInternal.dsc Plumb teardown timeout all the way down to AriaNative (#611) Jul 18, 2019
config.nuget.aspNetCore.dsc Update asp.netcore to v2.2.0 for the Build Explorer (#354) May 23, 2019
config.nuget.vssdk.dsc Initial sync Mar 28, 2019
domino.cmd Initial sync Mar 28, 2019
drop.cmd Update the VSO Credential provider for nuget to fix authentitation is… Apr 9, 2019
dropout.cmd Initial sync Mar 28, 2019
macos.mounts.dsc Initial sync Mar 28, 2019

Microsoft Build Accelerator

BuildXL Icon


Build Accelerator, BuildXL for short, is a build engine originally developed for large internal teams at Microsoft, and owned by the Tools for Software Engineers team, part of the Microsoft One Engineering System internal engineering group. Internally at Microsoft, BuildXL runs 30,000+ builds per day on monorepo codebases up to a half-terabyte in size with a half-million process executions per build, using distribution to thousands of datacenter machines and petabytes of source code, package, and build output caching. Thousands of developers use BuildXL on their desktops for faster builds even on mega-sized codebases.

BuildXL accelerates multiple build languages, including:

  • MSBuild (using new features under development in MSBuild 16 which will ship in future versions of Visual Studio 2019 and the .NET Core SDK)
  • CMake (under development)
  • Its own internal scripting language, DScript, an experimental TypeScript based format used as an intermediate language by a small number of teams inside Microsoft

BuildXL has a command-line interface. There are currently no plans to integrate it into Visual Studio. The project is open source in the spirit of transparency of our engineering system. You may find our technology useful if you face similar issues of scale. Note that BuildXL is not intended as a replacement for MSBuild or to indicate any future direction of build languages from Microsoft.


The BuildXL documentation main page is here.

Examples and Demos

See the Examples/ folder for basic project examples. See the Demos page for information about various technical demos like using the process sandboxing code.

Building the Code

Build Status - Azure DevOps Pipelines

Build status

Command Line Build and Test

This repo uses DScript files for its own build. From the root of the enlistment run: bxl.cmd which will:

  1. Download the latest self-host engine release.
  2. Pull all needed packages from and other package sources.
  3. Run a debug build as well as the unit tests locally.
  4. Deploy a runnable bxl.exe to: out\bin\debug\win-x64.

Note you do not need administrator (elevated) privileges for your console window.

If you just want to compile BuildXL without running tests you can use: bxl.cmd -minimal after which you can find the binaries in out\bin\debug\win-x64.

Other build types can be performed as well:

  • bxl -deployConfig release : Retail build
  • bxl /vs : Converts DScript files into MSBuild .proj files and generates a .sln for the project at out\vs\BuildXL\BuildXL.sln


You should use Windows 10 with BuildXL. You do not need to install Visual Studio to get a working build, but see the section below on using VS with BuildXL for developing in the BuildXL codebase.


To run BuildXL on macOS you need to install:

  • Microsoft .NET Core SDK for macOS
  • The latest Mono runtime
  • If you want to run and load the sandbox to enable fully observed and cacheable builds, you also have to turn off System Integrity Protection (SIP) on macOS. SIP blocks the installation of the unsigned kernel extension (or Kext) produced by the build.

To start building, go to the root of the repository and run ./ --minimal in your preferred terminal. Just like bxl.cmd, this bash script also supports several flags for your convenience.

Using BuildXL With Visual Studio

Because we don't have deep VS integration for BuildXL at this time, you can use bxl /vs which will convert the DScript files into MSBuild .proj files and generates a .sln for the project under out\vs\BuildXL\ with a base filename matching the top-level directory of your enlistment. So for example if your enlistment directory is c:\enlist\BuildXL, the generated solution file will be out\vs\BuildXL\BuildXL.sln.



You can’t perform that action at this time.