Remote Project References
Remote Project References are similar to regular Project References, but instead of referencing a another project on the local system, the refer to a project hosted online in a Git repository. As part of the build, EBuild will automatically download (clone) or update the repository to the local disk as needed, and then include the local project as regular reference.
Remote Project References are a great way to maintain dependencies to projects that are maintained by third parties, or libraries shared between teams or solutions within your own company.
How EBuild Resolves Remote Project References
For each Remote Project References encountered, EBuild will determine a standardized local folder to create a local clone in. If a copy of the repository already exists, EBuild will update (i.e. fetch and pull) that repository to be up to date with the remote; if not, it will download (i.e. clone) the repository to that folder.
Remote Project References can specify an optional branch name; if present, EBuild will select that branch, otherwise it will use the
master branch of the repository.
EBuild will then load in the local copy of the referenced project, and ensure it will be built as if it had been part of the solution to begin with. EBuild will of course also process and Project References or Remote Project References contained within that project, so that recursive dependencies are handled correctly. The final build order for all involved projects will be determined once all Remote Project References have been pulled and resolved.
If a Remote Project References cannot be pulled/cloned, or if the specified project file cannot be found within the repository, the build will fail.
As each project hits the
ElementsResolveReferences task, project references are resolve, as described in Project References: How EBuild resolves Project References.