Building Razor from source allows you to tweak and customize the Razor compiler and tooling experience for ASP.NET Core, and to contribute your improvements back to the project.
See https://github.com/dotnet/razor/issues for known issues and to track ongoing work.
For a new copy of the project, run:
git clone https://github.com/dotnet/razor.git
On a windows based machine, you might to allow for long paths:
git config --global core.longpaths true
in order to clone/build the repo, successfully.
Building Razor on Windows requires:
- Windows 10, version 1803 or newer
- At least 10 GB of disk space and a good internet connection (our build scripts download a lot of tools and dependencies)
- Git. https://git-scm.org
Building Razor 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: https://docs.microsoft.com/en-us/dotnet/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)
- curl https://curl.haxx.se or Wget https://www.gnu.org/software/wget
- Git https://git-scm.org
NOTE some ISPs have been know to use web filtering software that has caused issues with git repository cloning, if you experience issues cloning this repo please review https://help.github.com/en/github/authenticating-to-github/using-ssh-over-the-https-port
Before opening the Razor.sln
file in Visual Studio or VS Code, you need to perform the following actions.
-
Executing the following on command-line:
.\restore.cmd
This will download the required tools and build the entire repository once.
💡 Pro tip: you will also want to run this command after pulling large sets of changes. On the main branch, we regularly update the versions of .NET Core SDK required to build the repo. You will need to restart Visual Studio every time we update the .NET Core SDK. To allow executing the setup script, you may need to update the execution policy on your machine. You can do so by running the
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
command in PowerShell. For more information on execution policies, you can read the execution policy docs. -
Use the
.\startvs.cmd
script to open Visual Studio with the Razor solution. This script first sets the required environment variables. In addition, the following switches can be specified:
-chooseVS
: When specified, displays a list of the installed Visual Studio instances and prompts to pick an instance to launch. By default, the newest recently installed instance of Visual Studio is launched.-includeRoslynDeps
: When specified, sets an environment variable that causes the Roslyn dependences of Razor to be deployed. This can be useful if the latest Razor bits depend on a breaking change in Roslyn that isn't available in the version of Visual Studio being targeted. If you encounter errors when debugging the Razor bits that you've built and deployed, setting this switch might fix them.
💡 Windows tip: if you encounter errors pointing to
path-too-long
errors, likeThe fully qualified file name must be less than 260 characters.
, consider shortening your local path withsubst
, whereR
is a free drive-letter, e.g.$dir = pwd subst R: $dir cd R:\
-
Set
Microsoft.VisualStudio.RazorExtension
as the startup project.
Executing .\restore.cmd
or .\build.cmd
may produce these errors:
error : Unable to locate the .NET Core SDK. Check that it is installed and that the version specified in global.json (if any) matches the installed version. error MSB4236: The SDK 'Microsoft.NET.Sdk' specified could not be found.
In most cases, this is because the option Use previews of the .NET Core SDK in VS2019 is not checked. Start Visual Studio, go to Tools > Options and check Use previews of the .NET Core SDK under Environment > Preview Features.
Outside of Razor's language server and C# workspace logic, the bulk of our VS Code logic now lives in the dotnet/vscode-csharp repo.
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
Because we are using pre-release versions of .NET Core, you have to set a handful of environment variables to make the .NET Core command line tool work well. You can set these environment variables like this
On Windows (requires PowerShell):
# The extra dot at the beginning is required to 'dot source' this file into the right scope.
. .\activate.ps1
On macOS/Linux:
source ./activate.sh
Tests are not run by default. Use the -test
option to run tests in addition to building.
On Windows:
.\build.cmd -test
On macOS/Linux:
./build.sh --test