Cross-platform C#

Project generation for every platform. Define your project content once and compile code for every platform, in any IDE or build system, on any operating system.

One executable

Protobuild ships as a single, 150kb executable in your repository. Users don't need to install any software; just double-click Protobuild to generate projects.

No duplication

Don't duplicate support for each platform in multiple C# projects. Protobuild generates C# projects for any platform from a single definition, with options available to include and exclude resources based on the target platform.

Two-way project sync

Reduce hand editing of project definition files. Adding or removing files in your IDE synchronises back to the project when running Protobuild.

Flexible configuration

Protobuild offers multiple levels of customization for your projects. From simple option toggles to complete customization of project files, Protobuild allows you to output projects in the exact format you require.

Package management

Protobuild includes a powerful package management system, which supports true cross-platform packages (so you can P/Invoke in a library), dual source/binary packages (allowing you to switch to source code for a library when you need to debug it) and support for NuGet.

Build only what you need

Protobuild provides a powerful dependency system, which can exclude code in projects when no consuming projects use that functionality. This can also be used to provide alternate implementations of functionality.

No cruft

Project definitions in Protobuild contain only what is needed to generate your projects. Irrelevant properties and C# project configuration (such as developer-specific settings) are never tracked in source control.