Building ASP.NET Core from source allows you tweak and customize ASP.NET Core, and to contribute your improvements back to the project.
We are currently in the middle of restructing our repositories. While this work is being done, the following instructions will help you be more productive while working on this repo.
build.cmd /p:_ProjectsOnly=true /p:SkipTests=true. This will only build the projects which have merged into this repo, not the git submodules.Building ASP.NET Core on Windows requires:
Building ASP.NET Core on macOS or Linux requires:
ASP.NET Core uses git submodules to include source from a few other projects.
For a new copy of the project, run:
git clone --recursive https://github.com/aspnet/AspNetCore
To update an existing copy, run:
git submodule update --init --recursive
Before opening our .sln files in Visual Studio or VS Code, executing the following on command-line:
.\build.cmd /t:Restore
This will download required tools.
For VS Code and Visual Studio to work correctly, you must place the following location in your PATH.
Windows: %USERPROFILE%\.dotnet\x64
Linux/macOS: $HOME/.dotnet
This must come before any other installation of dotnet. In Windows, we recommend removing C:\Program Files\dotnet from PATH in system variables and adding %USERPROFILE%\.dotnet\x64 to PATH in user variables.

You can also build the entire project on command line with the build.cmd/.sh scripts.
On Windows:
.\build.cmd
On macOS/Linux:
./build.sh
Additional properties can be added as an argument in the form /property:$name=$value, or /p:$name=$value for short. For example:
.\build.cmd /p:Configuration=Release
Common properties include:
| Property | Description |
|---|---|
| BuildNumber | (string). A specific build number, typically from a CI counter |
| Configuration | Debug or Release. Default = Debug. |
| SkipTests | true or false. When true, builds without running tests. |
| NoBuild | true or false. Runs tests without rebuilding. |
After building ASP.NET Core from source, you will need to install and use your local version of ASP.NET Core.
artifacts/installers/ for your platform.Add a NuGet.Config to your project directory with the following content:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="MyBuildOfAspNetCore" value="C:\src\aspnet\AspNetCore\artifacts\build\" />
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
NOTE: This NuGet.Config should be with your application unless you want nightly packages to potentially start being restored for other apps on the machine.
Update the versions on PackageReference items in your .csproj project file to point to the version from your local build.
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="3.0.0-alpha1-t000" />
</ItemGroup>
Some features, such as new target frameworks, may require prerelease tooling builds for Visual Studio. These are available in the Visual Studio Preview.