Skip to content

Creating Simple Tasks in .NET with Bullseye

Sponsor: 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.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.


How many times have you created a console application to run specific tasks in .NET?  These tasks could be processing a file, making some HTTP call to an external service or even helping in your build process.  Ultimately ending up with a collection of different tasks which often have dependencies on each other. I just discovered a project called Bullseye by Adam Ralph which really feels like a simple task runner.  But better yet, is just a library you add to your own console application and not its own process itself.

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 the Target() 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: This would have been the equivalent of running 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 with dotnet run saveexchangerate Now if I just want to get the rate but not save it, I could just run dotnet run getexchangerate

Targets

How are you handling running small tasks/targets?  Simple console applications?  Using the new global tools? Let me know on Twitter or in the comments.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.


Leave a Reply

Your email address will not be published. Required fields are marked *