versioning

There are 4 entries for the tag versioning

Changing A Strong Name Is A Major Breaking Change

Recently, the Log4Net team released log4net 1.2.11 (congrats by the way!). The previous version of log4Net was 1.2.10. Despite which version of version you subscribe to, we can all agree that only incrementing the third part of a version indicates that the new release is a minor update and one that hopefully has no breaking changes. Perhaps a bug fix release. This is especially true if you subscribe to Semantic Versioning (SemVer) as NuGet does. As I wrote previously, SemVer is a convention for versioning your public APIs that gives meaning to the version...

SemVer, NuGet, and Nightly Builds

Recently, a group of covert ninjas within my organization started to investigate what it would take to change our internal build and continuous integration systems (CI) to take advantage of NuGet for many of our products, and I need your input! Hmm, off by one error slays me again. -Image from Ask A Ninja. Click on the image to visit. Ok, they’re not really covert ninjas, that just sounds much cooler than a team of slightly pudgy software developers. Ok, they’ve told me to speak for myself, they’re in great shape! In...

More Versioning Fun With Optional Arguments

In my last blog post, I covered some challenges with versioning methods that differ only by optional parameters. If you haven’t read it, go read it. If I do say so myself, it’s kind of interesting. ;) In this post, I want to cover another very subtle versioning issue with using optional parameters. At the very end of that last post, I made the following comment. By the way, you can add overloads that have additional required parameters. So in this way, you are in the same boat as before. However, this can...

Versioning Issues With Optional Arguments

One nice new feature introduced in C# 4 is support for named and optional arguments. While these two features are often discussed together, they really are orthogonal concepts. Let’s look at a quick example of these two concepts at work. Suppose we have a class with one method having the following signature. // v1 public static void Redirect(string url, string protocol = "http"); This hypothetical library contains a single method that takes in two parameters, a required string url and an optional string protocol. The following shows...