Welcome to Protobuild¶
Protobuild is a project generation system for C#. It aims to make cross-platform development in C# easier, by generating your projects in the appropriate format for each platform.
Protobuild is fully open source and available under an MIT license.
This documentation is organised into two sections:
User Documentation¶
This documentation is for developers interested in using Protobuild in their own projects.
General Information
- Frequently Asked Questions
- Why was Protobuild created?
- What platforms can Protobuild generate projects for?
- Can I extend it to support other platforms?
- What license is Protobuild under?
- Why not use MSBuild conditionals to target multiple platforms?
- What languages can Protobuild generate for?
- Why does Protobuild have it’s own package management system?
- What files should I keep in source control?
- Why does Protobuild use XML for it’s project definitions?
- I’ve seen Protobuild projects explicitly set project GUIDs, do I need to do that?
- How can I contribute?
- How do I build Protobuild itself?
- GitHub
- Contributing
Graphical Interface
Command-Line Interface
- Getting Started
- Defining Application Projects
- Defining Console Projects
- Defining Library Projects
- Defining Content Projects
- Defining Include Projects
- Defining External Projects
- Migrating Existing C# Projects
- Customizing Projects with Properties
- AssemblyName
- FrameworkVersions
- PlatformSpecificOutputFolder
- ProjectSpecificOutputFolder
- CustomDefinitions
- ForceArchitecture
- RootNamespace
- NoWarn
- WarningLevel
- TreatWarningsAsErrors
- CheckForOverflowUnderflow
- ManifestPrefix
- RazorGeneratorTargetsPath
- RemoveXnaAssembliesOnWP8
- WindowsApplicationIcon
- iOSUseArmv7
- iOSUseLlvm
- iOSUseSGen
- iOSUseRefCounting
- iOSI18n
- iOSArch
- SignAssembly
- IncludeMonoRuntimeOnMac
- MonoMacRuntimeLinkMode
- MonoDevelopPoliciesFile
- Changing Module Properties
- Including Submodules
- Package Management with Protobuild
- Package Management with NuGet
- Creating Packages for Protobuild
- Code Signing for iOS
- Targeting the Web Platform
- Service Dependencies
- Customizing Protobuild
End User Guides¶
This documentation is for end users; that is, people consuming projects that already use Protobuild. If you’re a developer interested in using Protobuild in your own projects, refer to the User Documentation instead.
When documenting how to generate your projects, it is recommended you refer your users to the guides listed below.