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!
We utilize ordinary CLI references and collect information like argument types, formatting and help texts into language-agnostic metadata files. This process is aided by auto-completion. The metadata is consumed by our custom code-generator, which will generate a comprehensive structure of entry methods, data classes, enumerations and extension methods. This approach is fast, reduces the risk of bugs and typos, and doesn't require tests. Most importantly, it always ensures a consistent API.
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.