Trivia Answers and CCNet Build Breaking Changes plugin release
Well, I know that you wanna know the answers... Ok, I'll say it, just let me show a very nice place here in London first!
A very old building. The mayor started repairing it so it won't be a Build Breaking! Ok, I admit that was awful, lol.
Let's get the Trivia out of our minds!!!
Answers
First Question
Well, it's hard to answer it exactly, but we'll try. Yes, as you guessed there are two from TestMethod and TestMethod2. Wait, it doesn't stop here. There are two more: one for getting TestProperty and one for setting it. I bet you knew this one too. Well, .Net creates under the covers a method called get_PropertyName and a set_PropertyName that it uses to provider property functionality.
Cool, the answer is FOUR then, right? NO!
The problem is that .Net creates more stuff behind the covers. For EVENTS!
It creates one method for adding a handler to an event, and another for removing. So two more! Keep counting. There's more!
It creates as well one method for Raising the event (check msdn documentation).
And it keeps track of an array of methods that might have been associated with the event in the IL (check msdn documentation).
So if you were keeping track, and assuming that the last two are optional, we have AT LEAST 6 methods. Just know that this might be far from the reality and there might be more methods.
Second Question
This one's easy. Assuming that the root namespace is Root, we should pass Root.TestClass.TestEnum, right?
WRONG! The correct string is Root.TestClass+TestEnum, since TestEnum is a nested entity, and all nested entities are signaled with a + sign.
The same is valid for the other two classes which would be Root.TestClass+MyNestedClass and Root.TestClass+MyNestedClass+MyTwofoldNestedClass.
Third Question
Well, let's see... This property should return true for all three, since they are all public, right? Not really my friend. Here enters the obscure IsNestedPublic property. When a type is nested it's IsPublic property ALWAYS evaluates to false, and you should instead use the IsNested property in combination with the IsNestedPublic one.
Fourth Question
Well, at first everything will go smooth, right? But in the end the struct list will contain two types: the enumeration and the struct. WOOOT??? Well, since .net enumerations ARE value types as well there's nothing actually wrong with that. To fix it just add a continue; statement after each list addition. This way you'll get the values right.
How many did you score?
CCNet Build Breaking Changes plugin
This is what the report looks like today (you can check it online at http://buildserver.stormwindproject.org):

This report contains a lot of information.
First it tells if my build contains breaking changes with a very visible notice at the top (this notice also shows in the build summary to let the user know that the build contains breaking changes.
Second it details ALL changes so you can decide on what's important to track or not. This way you always know if some break in the public contract of a given assembly will alter the functionalities of the users of that assembly.
The process of setting this up in your own Build Server is detailed in the Getting Started page in Stormwind Project portal. Check it out! You can download it here.
We want feedback as to what you'd like to see included in the plug-in.
See yall!
#129