EBuild is a new build chain infrastructure that we are developing, both for Elements and for general use. Once fully implemented, it will eventually replace our use of MSBuild/xbuild throughout the product.

EBuild is already the default build chain for

In Visual Studio, you can right-click a project and choose "Convert Project to Use EBuild" to manually opt individual .NET or Cocoa projects to using EBuild. Work is ongoing to make EBuild the default for all projects in Visual Studio, very soon.

Fire and Water also use EBuild internally for resolving references inside the IDE. The resolve log can be seen when selecting the "References" node of a project.

Please refer to the Status page for more details on the current status of EBuild, and what parts are useable. Feedback is appreciated, as the only way to get EBuild completely solid is to hear how it fares with your projects.

Internal Structure

The EBuild project is structured into several components, some of which are Elements-specific, and some are not:

  • The core RemObjects.EBuild library implements the basic EBuild system. It is not tied to and does not depend on Elements, and can, in theory, be used for any compiler or tool chain.

  • The RemObjects.Elements.Basics library provides core functionality for Elements, shared by both the build/compile and the IDEs. It does not depend on EBuild.

  • The RemObjects.Elements.CrossBox library provides builds upon Basics, and implements the CrossBox 2 infrastructure, including server and device management, remote connections, and deploy/run/debug scenarios. It too does not depend on EBuild.

  • The RemObjects.EBuild.Elements library brings both pillars together, and implements the concrete build tasks for Elements. It depends on both core EBuild and on Basics and CrossBox, and contains all the actual build logic to build Elements projects. Aside from the actual compiler itself, all build phases are part of the EBuild open source project.

The IDEs (Fire, Water and, to a lesser degree, Visual Studio) also leverage Basics and CrossBox for base tasks, and for deployment and debugging. Fire and Water also use the ElementsResolveReferences task from EBuild.Elements to resolve references for Code Completion and other IDE smarts.

  • The RemObjects.EBuild.MSBuild library, finally, provides a wrapper to host EBuild within MSBuild. This is used when building inside Visual Studio, and can also be used to integrate EBuild with other tasks in a larger MSBuild-based build script. Please refer to last section of the Building topic for more details.

Feedback, Support and Discussion

A discussion forum for EBuild is available here on Talk.