AutoMapper 7.0 Released

Today I pushed out the AutoMapper 7.0 release: Release notes This release is mainly bug fixes, but keeping with the last few major releases, has a few breaking API changes. The major breaking API change is breaking out the expression mapping (OData support) so that it can release independently of the normal in-memory AutoMapper mapping. You can find this in the AutoMapper.Extensions.ExpressionMapping package. I've also updated the [Read More]

MediatR 5.0 Released

Another milestone for MediatR, I released 5.0 over the weekend. This release simplifies a number of interfaces and methods, but introduced some breaking changes along the way. The major change for MediatR in 5.0 is the combination of void requests to directly implement IRequest<Unit>. In 4.x: public interface IRequest<T> : IBaseRequest { } public interface IRequest : IBaseRequest { } And in 5.0: public interface IRequest& [Read More]

Vertical Slice Architecture

Many years back, we started on a new, long term project, and to start off with, we built the architecture around an onion architecture. Within a couple of months, the cracks started to show around this style and we moved away from that architecture and towards CQRS (before it had that name). Along with moving to CQRS, we started building our architectures around vertical slices instead of layers (whether flat [Read More]

Containers - What Are They Good For? Build Environments?

In the last post, I looked at how containers could make local development easier for our typical projects, and mainly found they work well for dependencies. Next up, I wanted to see if they could make our continuous integration server "better". Better, as in, faster, more reliable, more deterministic. But first, let's review our typical environment: We have Continuous Integration servers running either on premise (with TFS, Jenkins, TeamCity) or [Read More]