Build ASP.NET Core from Source ============================== Building ASP.NET Core from source allows you tweak and customize ASP.NET Core, and to contribute your improvements back to the project. ## Install pre-requistes ### Windows Building ASP.NET Core on Windows requires: * Windows 7 or higher * At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies) * Visual Studio 2017. * Git. * (Optional) some optional components, like the SignalR Java client, may require * NodeJS * Java Development Kit 10 or newer. Either: * OpenJDK * Oracle's JDK ### macOS/Linux Building ASP.NET Core on macOS or Linux requires: * If using macOS, you need macOS Sierra or newer. * If using Linux, you need a machine with all .NET Core Linux prerequisites: * At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies) * Git * (Optional) some optional components, like the SignalR Java client, may require * NodeJS * Java Development Kit 10 or newer. Either: * OpenJDK * Oracle's JDK ## Clone the source code 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 ``` ## Building in Visual Studio / Code 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. #### PATH 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. ## Building on command-line 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 ``` #### Build properties 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. ## Use the result of your build After building ASP.NET Core from source, you will need to install and use your local version of ASP.NET Core. - Run the installers produced in `artifacts/installers/` for your platform. - Add a NuGet.Config to your project directory with the following content: ```xml ``` *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. ```xml ``` Some features, such as new target frameworks, may require prerelease tooling builds for Visual Studio. These are available in the [Visual Studio Preview](https://www.visualstudio.com/vs/preview/).