Builds are full-fledged C# projects. No preprocessing involved! That means all the powerful IDE features like auto-completion, refactorings and formatting will celebrate their comeback. Targets are defined as expression-bodied properties and therefore provide superior navigation. Also target dependency definitions and rename refactorings benefit from this approach. Ultimately, debugging is available just as you know it. No more writing debug output to the console!
Fields can be marked with different attributes to get their value injected prior to execution. For instance,
[Parameter] retrieves the value from command-line arguments and environment variables with the same name as the field.
Absolute and relative paths can be constructed using the
+ operators, which will automatically adjust the directory separator to the underlying OS. If required, paths can also be casted to match other platforms.
Common metadata, like solution file or repository url, and best-practice settings, like custom loggers or coverage filters, are automatically loaded into
DefaultSettings and can be used to invoke tools more efficiently.
Implementing support for CLI tools is crucial for build systems. We provide a code generator to solve this problem! It works based on JSON definition files which are usually written within several minutes. As output we generate a comprehensive structure of entry methods, data classes, enumerations and extension methods. Not only does this structure implement the builder pattern; we also provide extension points for more complicated implementations as well as specialized methods for manipulating boolean, list and other argument types.