NUnit for .NET 4.0

I recently upgraded one of my projects to .NET 4.0 only to find that NUnit would no longer run my tests. Rather than waiting for the next version of NUnit to come with a .NET 4 build I decided to download the source code and build it myself. I’m including a zipfile with the required solution and project files to build NUnit yourself.

This should tide you over until the official build is released.

Build Steps

  1. Download the latest source code of NUnit
  2. Place the unzipped contents of this folder at $(NUnit)\solutions\
  3. Open nunit.sln and build
    1. You will get some build errors on one of the assemblies but most of the core assemblies will work fine.
  4. Copy the newly built assemblies into your applications lib folder.

Why Bing?

In case you were wondering, like me, where the name Bing came from here is the reason.
A New Product Deserves A New Brand

Our research around Bing showed that it connoted “fast,” “easy,” and “delight”—all qualities that mapped very naturally to the search experience. It was also seen as the friendliest and most approachable name option.

Castle Crashers

This weekend I found a great new game on Xbox live called Castle Crashers. It’s basically a hysterical mix of River City Ransom and Super Mario Brothers 3. You are a knight of one of 4 colors (you can unlock more) and you romp around fighting all sorts of different looking monsters. The artwork is very original and full of detail. The game is gratuitously violet, scatalogical and random.

The gameplay is mostly button masher with some RPG elements. Combined with the cheap Xbox Live arcade pricing this game is high in the fun/dollar (fpd?) ratio. I haven’t beaten it yet and I’m not sure how long it is overall but I have a feeling that I still have a ways to go. It’s amazing how much mileage you can get out of a simple idea and fun artwork.

Reflection vs. code generation – by Martin Fowler

Here is an interesting article by Martin Fowler on the subject of reflection vs. code generation.

Here is a nice quote to sum it up (with which I couldn’t agree more).

Active code generation gives us all the benefits of reflection, but none of its limitations. Reflection will still be used, but only during the code generation process, and not during runtime.

Here is another endorsement he gives after many examples and justifications.

The benefits of reflection are obvious. When coupled with code generation it becomes an invaluable and, more importantly, a safe tool. There is often no other way to escape many seemingly redundant tasks. As for code generation: the more I work with it, the more I like it. With every refactoring and increase in functionality, the code becomes clearer and more understandable. However, runtime reflection has the opposite effect. The more I increase its functionality, the more it increases in complexity. So, in the future, if you feel you need to conquer a complicated problem using reflection, just remember one rule: don’t do it at runtime.

I couldn’t agree more, except I would go one step further and consider “code generation” just another form of transformation at compile time. At least that is what I’m hoping to accomplish with MetaSharp.