HSponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

Bullseye
Bullseye is a .NET package for describing and running targets and their dependencies. Bullseye can be used to write targets that do anything. It is not coupled to building .NET projects. Platform support: .NET Standard 1.3 and upwards.
Examples
The simplest example which is described on the Bullseye readme is similar to as follows: There’s really only two components needed. Define your target(s) using theTarget()
methods and then specify which targets to run via RunTargets()
If you do not specify a target to run then the “default” target is used.
If you simply run dotnet run
will produce the output:

dotnet run default
Dependencies
Here’s a simple example of having one target depend on another. In one target I’m hitting a service to get the exchange rate from CAD to USD. In another, I want to save that rate to a file. When run withdotnet run saveexchangerate

dotnet run getexchangerate