Build Command

Building a .NET project is hard when the project references a project reference outside of the solution or even from a different GIT repository. This command builds a GIT repository and it's depending repositories or a single .NET solution File. In order build command to work, its executing directory or passed --working-directory parameter's directory must contain one of;

  • A .NET solution file (*.sln)
  • abp-build-config.json

When the executing directory (or --working-directory parameter's directory) contains a .NET solution file, build command builds all the projects in the related solution file and all project references on building project files recursively.

When the executing directory (or --working-directory parameter's directory) contains a abp-build-config.json, build command builds all changed projects form its last build and all project references on building project files recursively.

Build Command Config

abp-build-config.json contains properties below;

  • Name: Name of the GIT repository. This can be friendly name of your GIT repository or any other unique string for the repository.
  • RootPath: Root path of the repository which contains .git folder.
  • DependingRepositories: Depending repository list of a repository. Each depending repository item contains same fields as a repository.
  • IgnoredDirectories: Relative directory paths to ignore while building a GIT repository.

A sample abp-build-config.json looks like for a Windows OS;

{
    "Name": "main-repository",
    "RootPath": "D:\\GitHub\\main-repository",
    "DependingRepositories": [{
        "Name": "module-repository",
        "RootPath": "D:\\GitHub\\module-repository"
    }],
    "IgnoredDirectories": [
        "utils"
    ]
}

Build Status

ABP CLI stores a build status file for builds using the repository friendly names and current branch names in the;

  • %USERPROFILE%\.abp\build\ for Windows.
  • $HOME/.abp/build/ for Linux/macOS.

and uses this file when building same repository next time and only builds affected projects and decreases the total build time. A sample build status file content looks like;

{
    "RepositoryName": "main-repository",
    "BranchName": "dev",
    "CommitId": "84ecde8ba275aeeb14d24a87ad46a1e941adf8ba",
    "SucceedProjects": [{
        "CsProjPath": "D:\\GitHub\\main-repository\\BookStore\\BookStore.Web.csproj",
        "CommitId": "84ecde8ba275aeeb14d24a87ad46a1e941adf8ba"
    }],
    "DependingRepositories": [{
        "RepositoryName": "module-repository",
        "BranchName": "dev",
        "CommitId": "0598b8e45af9507fc9ba8abf304e78fc7d434e04",
        "SucceedProjects": [{
            "CsProjPath": "D:\\GitHub\\module-repository\\identity-module\Identity\\Identity.Web.csproj",
            "CommitId": "0598b8e45af9507fc9ba8abf304e78fc7d434e04"
        }],
        "DependingRepositories": []
    }]
}
In this document