Outbreak Labs

I can do anything I want to. And so can you.

Simplify your configuration with ConfigureAll

I've been using the new Options pattern for configuration in my .net core apps. I like it, but got tired of having to write lines like  


every time I added a new configuration class. I've written a library called ConfigureAll to address this inconvenience. With this library, you can add an attribute to your configuration classes indicating their configuration key, like 

    public class FrobOptions
        public string TestValue { get; set; }

then just call

services.ConfigureAll(this.GetType().GetTypeInfo().Assembly, Configuration);

once, instead of having to configure each type individually. For more information, see the GitHub page: https://github.com/SapientGuardian/SapientGuardian.ConfigureAll

BaseNEncodings.Net Retargeted to .NET Standard 1.1

I've been a long-time user of the WallF BaseNEncodings.Net library. It's the only library I'm aware of that was explicitly built to RFC 4648. I submitted a pull request to retarget the library to netstandard1.1, but received no response from the author. While I had hoped the project were still maintained, that seems not to be the case. To that end, I have forked the library and republished it. The new repo is https://github.com/SapientGuardian/BaseNEncodings.Net. Happy Encoding!

New release and location for .NET Core port of MySQLConnector/Net

Back in October, I released a port of MySQL Connector targeting dnxcore50 (at the time, this was the moniker for .NET Core). It had just enough functionality to do what I needed, had no running tests, and didn't conform to the expected interfaces of new data providers - so it couldn't slot in to any ORMs. I upgraded it to target netstandard 1.5 when RC2 came out, but didn't do much with it other than that.

Over the past two days, I've had contributions to get CI builds running through AppVeyor and a large PR that retargeted to netstandard 1.3, which meant it could be built for other platforms too. Builds are now automated and on NuGet. The open source machine is working!

The repo has been relocated to https://github.com/SapientGuardian/mysql-connector-net-netstandard

EasyNetQ on CoreCLR / DNXCore50, removing port of Protobuf-net

Disappointed with the seeming disinterest of the official RabbitMQ team in supporting CoreCLR, I was pleased to see that someone had gone and done it themselves. The logical next step once we've got the base RabbitMQ client available is to port EasyNetQ. I've done just that: https://github.com/SapientGuardian/EasyNetQ

I'm also pleased to note that there's an alpha build of Protobuf-net that's at least as good as the one I had going, so I've removed my fork from github so as not to confuse anyone into thinking it had value at this point.

MySQL Connector/Net for CoreCLR / DNXCore50

After several failed attempts, I have managed to strip down and modify the MySQL Connector/Net library enough to get it working on DNXCore50. I would strongly advise against using this in production, but it may work for testing purposes while waiting for an official release from Oracle. Here is the repo.

The following basic scenario works, which was my goal:

string connectionString = "server=;userid=my_user;password=my_password;database=my_db;default command timeout=10;Connection Timeout=5;";

    using (var conn = new MySqlConnection(connectionString))
        var cmd = new MySqlCommand(@"select col1, col2 from data where id = @id", conn);
        cmd.Parameters.AddWithValue("@id", "myId");
        var reader = cmd.ExecuteReader();

        string col1data;
        string col2data;

        if (reader.Read())

            if (!reader.IsDBNull(0))
                col1data = reader.GetString(0);

            if (!reader.IsDBNull(1))
                col2data = reader.GetString(1);