How To Build Drill

Minimum Requirements

  • Microsoft .NET Framework 4.0
  • Drill source code
  • Internet access to download dependent NuGet packages from the NuGet Gallery (

Dependent NuGet Packages

Dependency binaries are not included in the source tree (with 2 minor exceptions: NuGet.exe and MSBuild.NUnit). Instead, the appropriate dependent packages are downloaded from the NuGet Gallery. The source code relies upon NuGet 2.1 (included in the source tree) to dynamically download and restore and missing dependency packages during the build. NuGet package restore is supported when building using MSBuild or Visual Studio 2012.

Building with MSBuild

The primary build method relies upon MSBuild to build the Drill source code without Visual Studio. The /.build/ directory in the source tree contains a build.bat batch file that is used to bootstrap the MSBuild project, build.proj.

There are four cmd files that provide convenience in starting a build:
  • build-Debug.cmd
  • build-Debug-RunTests.cmd
  • build-Release.cmd
  • build-Release-RunTests.cmd

These cmd files are very useful for starting a build from Windows Explorer but can also be used from the command line. All the cmd files do is start the batch file in a new %comspec% instance passing in the appropriate arguments.
  • build-Debug.cmd is used to start a debug build without running tests.
  • build-Debug-RunTests.cmd is used to start a debug build with test execution.
  • build-Release.cmd is used to start a release build without running tests.
  • build-Release-RunTests.cmd is used to start a release build with test execution.

Building with Visual Studio

The Drill source code is currently targeting Visual Studio 2012 and therefore Drill can be built using Visual Studio 2012. The Drill.sln solution file can be opened in Visual Studio 2012 and the Build Solution command can be issued to build all projects within the solution in the proper sequence.

Build Output

All build output is placed in the /.build/out directory. The build script always removes the out directory and all of its contents recursively at the start of each build.

The bin output directory contains all of the Drill binaries, pdb files and code doc xml files. Dependency assemblies and files are not included.

The bindep output directory contains all of the binaries, pdb files, code doc xml files including Drill assemblies and dependency assemblies and files.

The projects output directory contains a subdirectory for each project in the Drill solution and it contains the output files of the build for each respective project including Drill assemblies and dependency assemblies and files. For test projects, config, text and xml files are also included.

The tests output directory is a mirrored copy of the projects output directory that is further modified by having all built DrillBit assemblies copied into each project directory before the tests are executed. When the tests are run, they run against the these directories. After the tests have been executed successfully, the tests output directory is no longer needed.


The build scripts intentionally do not contain versioning capabilities. All builds from the source code use "" as the version for all built assemblies. Official Drill builds use an automated process that includes consistent, structured versioning of all files and assemblies.

NuGet Packaging of Drill Components

The official bulid of Drill automates the creation of the Drill NuGet packages. This functionality and its required resources (nuspec files, PowerShell scripts, etc.) are not included in the public source tree or build scripts at this time.

Last edited Nov 24, 2012 at 12:10 AM by wreynolds, version 3


No comments yet.