As .NET becomes more common cross-platform, a new generation of tools is emerging to help developers manage common workflows when using the same .NET code across multiple operating systems, runtimes and devices. Protobuild is one of these awesome emerging new tools and I’ve very proud to welcome them into the .NET Foundation.
In this guest post, June Rhodes from the Protobuild project team explains more about the project. If it looks like it will be useful to you, I encourage you to give it a try and get involved in the growing community.
Do you develop cross-platform .NET projects? Maybe you manage them with multiple C# projects on disk for each platform or framework you want to target? Or maybe you use MSBuild conditionals to target multiple platforms and fore-go the use of Linux or Mac IDEs for .NET?
I had used both techniques before I developed Protobuild; a cross-platform project generator for C#. With my solutions often having 10 or more assemblies, manually keeping a Windows, Linux and Mac version of every project in sync as well as managing the references was difficult. As someone who frequently works on Linux, selecting the MSBuild option and foregoing the use of MonoDevelop wasn’t an option either – I needed the ability to debug the software I was developing on all platforms.
I searched around for project generators at that point, but there weren’t any particular good C# options. In addition I found that most of the project generators were one-way; if you wanted to add a file to your solution, you needed to open the cross-platform project definitions and add the file there. I wanted less overhead managing projects, so Protobuild supports two-way generation; when you add or remove files in your IDE, these changes get synchronised back to the cross-platform project definitions.
Over time Protobuild evolved to support more platforms; it now supports Windows, Linux, Mac (MonoMac, XamMac and Xamarin.Mac), iOS, tvOS, Android, Ouya, PCL (for bait-and-switch), Windows 8 Apps, Windows Phone 8, Windows Phone 8.1, Web (via JSIL) and most recently Universal Windows Apps – and you can target all of these platforms for your project just by selecting a drop-down
These days, Protobuild is used by cross-platform projects like MonoGame to manage their projects and dependencies. It’s capable of cross-platform package management, and provides an automation layer for build server scripts.
If you’re managing cross-platform .NET projects, and you’d like to try out or use Protobuild for your own projects, you can download it from the Protobuild website.
June Rhodes, Project Lead, Protobuild