Welcome to Manicprogrammer Sign in | Join | Help

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 

Published Sunday, November 04, 2007 6:56 PM by heynemann

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments


Enter the text you see in the image:

Leave a Comment

(required) 
required 
(required)