CCNetConfig

Continuous Integration, Simplified Configuration

Home | Wiki | About | Login | Contact |
subscribeSubscribe
Subscribe
CCNetConfig
Releases
Beta Releases
Stable Releases
Work Items
Discussions
CPRP
Releases
Beta Releases
Stable Releases
RSS Builds Publisher
Releases
Beta Releases
Stable Releases
Current Release
0.5.0.120
Sun, Jan 20 2008 at 10:02 PM
All Releases
CCNetConfig Build Status
  • Build StatusSuccess
  • Label0.6.420.32915
  • Last Build4/28/2008 6:43 AM
  • Next Build7/24/2008 12:00 AM
Recent Work Items
  • Automated: Unhandled exceptio…
  • Automated: Object reference n…
  • support for SvnRevisionLabell…
  • Automated: Uncommon behaviour…
  • Automated: create a new confi…
  • Copying and pasting a task do…
  • Automated: Invalid URI: The U…
  • Automated: Cannot import a nu…
  • Remove support for plugins in…
  • Show splash screen on initial…
Legend: Proposed Active Fixed Closed
Tag Cloud
  • A Little Class
  • Automation
  • C#
  • CCNet
  • CCNetConfig
  • codeplex
  • CodePlexAPI
  • Continuous Integration
  • CruiseControl.NET
  • feedburner
  • google
  • JSON
  • LOLCode
  • MSBuild
  • RssBuildsPublisher
  • Sandcastle
  • subtext
  • subversion
  • SvnLabeller
  • tfs
  • twitter
  • Visual Studio
  • Wix
  • XML
  • xna
more tags...
Archives
  • July, 2008 (2)
  • May, 2008 (3)
  • April, 2008 (5)
  • March, 2008 (8)
  • February, 2008 (6)
  • January, 2008 (7)
  • December, 2007 (11)
  • November, 2007 (7)
  • October, 2007 (5)
  • September, 2007 (8)
  • August, 2007 (5)
  • June, 2007 (7)
  • May, 2007 (5)
  • April, 2007 (23)
  • March, 2007 (27)
  • February, 2007 (12)
  • January, 2007 (9)
  • December, 2006 (2)
  • November, 2006 (12)
  • October, 2006 (17)
  • September, 2006 (8)
  • August, 2006 (30)
 
Image Galleries
  • Screenshots
  • A Little Class
Post Categories
  • Announcements
  • Automation
  • Beta
  • Beta Marker
  • C#
  • CCNetConfig
  • CCNetConfig.BugTracking
  • CCnetConfig.CCNet
  • CCNetConfig.Core
  • CCNetConfig.GUI
  • CCNetConfig.Updater
  • CCNetConfig.Updater.Core
  • CodePlex
  • CodePlex Release Publisher
  • CodePlexAPI
  • Continuous Integration
  • CruiseControl.NET
  • Extending CCNetConfig
  • MSBuild
  • MsBuild Extended Tasks
  • News
  • Nightly
  • Orcas
  • Project Extension
  • Rant
  • Reflector
  • Release
  • RssBuildsPublisher
  • Sandcastle
  • SubText
  • SubVersion
  • TFS
  • TFS Plugin
  • Tools
  • TortiseSVN
  • Vista
  • Visual Studio
  • Wiki
  • Wix
  • XAML
  • Xbox Live
  • Zune
 

Blog Statistics
  • Posts219
  • Articles0
  • Comments36
  • Trackbacks5
Home
Download
Screenshots
Support
License
Source

March 2008 Entries

CCNetConfig project now funded by Microsoft
I have been unable to talk about this but today I can officially announce that CCNetConfig is now owned my Microsoft and I am a Microsoft employee. Microsoft has shown some great interest in this product since the very early releases. I have been in contact with them for the past few months and It is now a Microsoft product.

What does this mean for CCNetConfig? Well the release schedule will change a bit. More releases as I can now work on it full time. It will remain an open source product on CodePlex, but the license will be changing in future release from BSD to the MS-PL. The last major change is the name. The name, starting today, is Continuous Integration Configuration Enterprise Editor for CruiseControl .NET. The new project has been set up on CodePlex and all future source code will be located there.

I hope you enjoy using CICEECCNET as much as you enjoyed CCNetConfig.

I thought this was a good post for today since it is my birthday and April 1st.
Technorati Tags:[ ccnetconfig ]
Ryan Conrad posted @ Monday, March 31, 2008 9:07 PM | Comments (0)
A Shocking Phone Call

I am one of the many that have experienced the dreaded RROD on my Xbox 360. But my overall experience with the Xbox support hasn't been too bad. I shipped my bricked Xbox 360 over to Microsoft in the beginning of July last year after I got the return box from them. I would like to add that I think it is great that Microsoft extended the warranty for defective Xbox 360s that suffer from the 3 flashing red lights to 3 years. My Xbox decided to die 2 months after the already extended warranty expired so I would have had to shell out about $140 to send it in for repair.

The turn around from Microsoft was a lot quicker then I expected. I had a knock on the door from UPS just 12 days after I shipped it out. I tore open the box like a little kid at Christmas and found that they even returned my Guitar Hero II disc that I like to say that I couldn't get it out of the system, but in reality, just forgot that it was in there. The first thing I did was look at the serial number on the back of the system, because I didn't forget to write down the serial number, and the numbers didn't match. So I thought that this was great, I got a new system... And it was great, until I tried to play an arcade game that I downloaded and purchased before I received the new system. The games are tied to the other system and only work if I am connected to Xbox Live. I am also not the only person to have this issue either.

Since I am usually connected to Xbox Live anyhow, this wasn't much of an issue for me. Until my internet connection goes out... Well, that happened a couple weeks ago and reminded me that I needed to call Xbox support to get this issue resolved. The people I spoke with were very friendly, even to the point of just making "small talk" on what games I play, and the genres of games I like, while the support person was waiting for some information on their end.

I was on the phone with Xbox support for about 30 - 40 minutes and we tried everything in the "handbook". I don't really know if there is a handbook, but since I spoke to two different people and they both had me do basically the same things, I'm guessing there is some type of protocol in place for this issue. Once that didn't work, I was told that the issue would have to be escalated to upper management, which I thought was a little funny, because the first person I spoke to "escalated it to management" when he couldn't resolve the issue. I was told that within 30 days the issue would be corrected.

Just minutes before I started this post, I received a phone call from someone from Xbox support. They called to tell me that my issue has been resolved and that all of my downloaded content has been updated to work on the new ( now almost a year old ) system.

I really didn't expect that they would call me to notify of this. I just thought I would have to check if I could use the content when disconnected. So I think this is another example of Microsoft taking the extra step for its customers. Are there things that could be done better? I am sure there are, but my intent was to point out the good experience I had with Xbox support.

Technorati Tags:[ xbox ] [ drm ] [ microsoft ]
Filed Under [ Xbox Live ]
Ryan Conrad posted @ Tuesday, March 18, 2008 2:32 PM | Comments (0)
Needed Improvements and more coming
I was busy yesterday making some improvements to the site that I have had on my list of things to do for a while now. I still have a list of things I would like to change and add but here are some that I implemented.

The Contact form is now properly configured so I can be contacted from there again. The problem was with the SMTP server, it was not set up properly to allow the site to send mail messages.

Code within posts is now only highlighted on the site, the markup to perform the syntax highlighting was making the posts size very large causing FeedBurner to complain from time to time. To do syntax highlighting I use ActiPro CodeHighlighter with a collection of language definitions they include, along with some I have put together myself. I love the ActiPro CodeHighlighter, it is very flexible and it's a great price (Free). ActiPro also has a top notch SyntaxEditor that uses the same language definition files the CodeHighlighter uses. If you have a need for supporting Visual Studio type features like Intellisense, Code Outlining and Code Snippets to name only a few of the supported features, then I would suggest you take a look at ActiPro's SyntaxEditor. It's a great product and the price isn't too bad, even for a small shop or independent developer.

I added some info to the end of every post that identifies exactly where the source of the content is from. This is for those pesky niche blogs that scrape content from other blogs so they don't have to do any work. At least now readers will see where the content came from, if it comes from here.

Last, but certainly not least, The site search is working again and now powered by Microsoft Live Search. I figured, the content is already indexed and they have a nice little block of code that can be dropped in with little modification needed so why not let them handle the search. Plus using this allows you to search other places if you can't find it here.

Technorati Tags:[ live.com ] [ actipro ]
Filed Under [ Announcements ]
Ryan Conrad posted @ Tuesday, March 18, 2008 11:24 AM | Comments (0)
A Little Class (System.Xml.Linq.XElement)
LINQ2XML exposes a new set of classes for working with XML documents and elements. There is an XDocument class that represents an Xml Document, but as the MSDN documentation states, you only really need to create an instance of XDocument if you need specific functionality in the XDocument. In many cases, working with the XElement is possible and has a simpler programming model.

While this is a rather simple example, it does show how you can select specific elements from within an Xml document using LINQ.

Code

1using System; 2using System.Linq; 3using System.Xml.Linq; 4using System.IO; 5 6namespace ALittleClass ...{ 7 class Program ...{ 8 static void Main ( string[ ] args ) ...{ 9 // load the xml document from the local path 10 // i am getting the location of the executing assembly and using Path to get only the directory name, then 11 // combine that path with the name of the xml file. 12 XElement element = XElement.Load ( Path.Combine ( Path.GetDirectoryName ( typeof ( Program ).Assembly.Location ), "books.xml" ) ); 13 14 // display the document element of the document 15 Console.WriteLine ( "Loaded: {0}{1}", element.Name, Environment.NewLine ); 16 17 // use LINQ to find only the book elements 18 var titles = from f in element.Descendants ( "book" ) 19 // filter out any that have an id of bk102 20 where ( string )f.Attribute ( "id" ) != "bk102" 21 orderby f.Element("title").Value 22 // select only the title element from the book element 23 select f.Element ( "title" ); 24 25 // loop through the titles and display the value 26 foreach ( var title in titles ) ...{ 27 Console.WriteLine ( "Book: {0}", title.Value ); 28 } 29 30 Console.WriteLine ( "{0}Press {Enter} to continue...", Environment.NewLine ); 31 // wait for {enter} 32 Console.ReadLine ( ); 33 } 34 } 35}

Output

Loaded: catalog

Book: Creepy Crawlies
Book: Lover Birds
Book: Maeve Ascendant
Book: Microsoft .NET: The Programming Bible
Book: MSXML3: A Comprehensive Guide
Book: Oberon's Legacy
Book: Paradox Lost
Book: Splish Splash
Book: The Sundered Grail
Book: Visual Studio 7: A Comprehensive Guide
Book: XML Developer's Guide

Press {Enter} to continue...
Download: ALittleClass.03182008.zip [7.41 KB]
Technorati Tags:[ C# ] [ System.Xml.Linq ] [ Linq ] [ LINQ2Xml ]
Filed Under [ C# ]
Ryan Conrad posted @ Tuesday, March 18, 2008 8:59 AM | Comments (0)
New CodePlex Feature: Stats Page
The CodePlex Team announced the new feature added with this months deployment. The stats page add detailed information on downloads, visits, page views, and referrals over the projects lifetime. Stats can be viewed in weekly, monthly or yearly segments. They used the Telerik RadChart for displaying the data.
Technorati Tags:[ codeplex ] [ telerik ]
Filed Under [ CodePlex ]
Ryan Conrad posted @ Thursday, March 13, 2008 3:16 PM | Comments (0)
A Little Class (System.Runtime.Serialization.DataContractJsonSerializer)
This week I am going to cover the DataContractJsonSerializer in the System.Runtime.Serialization namespace. This is in the System.ServiceModel.Web.dll. This is new in the 3.5 framework. The Json serializer allows you to serialize a .NET object to JSON and deserialize back to a .NET object. While working on this example I found some limitations with this when using anonymous properties. It ends up serializing the property in a format that would not be able to be consumed by javascript.

A little back story, when the compiler compiles anonymous properties, it creates a private field that are named a way that would otherwise be invalid if you tried to name them your self this way. Here is what the property and the private field look like in Reflector.



When the serializer creates the property names when serializing, these are the names that it uses. I have not found any custom attributes that you can apply to the properties like you can with XmlElementAttribute. To work around this issue for this example I just used public fields. I did, however, come across JSON.NET by James Newton-King that will not only work in previous versions of .NET, it supports custom attributes to allow you to change the name of the serialized property. JSON.NET is hosted on CodePlex under the MIT license.

Code

1using System; 2using System.Runtime.Serialization.Json; 3using System.Collections.Generic; 4using System.Runtime.Serialization; 5using System.IO; 6 7namespace ALittleClass ...{ 8 class Program ...{ 9 static void Main ( string[ ] args ) ...{ 10 // create the JSON serializer 11 DataContractJsonSerializer json = new DataContractJsonSerializer ( typeof ( Person ) ); 12 13 // create a person that we can serializer 14 Person person = new Person ( ); 15 // set some values 16 person.Name = "Ryan Conrad"; 17 person.HomeAddress.Street.Add ( "1234 Middle Ave." ); 18 person.HomeAddress.City = "Burbank"; 19 person.HomeAddress.State = "IL"; 20 person.HomeAddress.ZipCode = "60459"; 21 // I got your number on the wall 22 person.CellPhone = "708-867-5309"; 23 person.Email = "foo@bar.blarg"; 24 // create a stream to store the serialized object 25 MemoryStream ms = new MemoryStream ( ); 26 using ( ms ) ...{ 27 json.WriteObject ( ms, person ); 28 // move to the begining of the stream so the JSON can be written to the console 29 ms.Position = 0; 30 // write the JSON to the console 31 Console.WriteLine ( System.Text.Encoding.Default.GetString ( ms.GetBuffer ( ) ) ); 32 // move to the begining of the stream so the JSON serializer can deserialize the object 33 ms.Position = 0; 34 // create a new person from the serialized data 35 Person newPerson = json.ReadObject ( ms ) as Person; 36 // output the name of the person to show it has been deserialized. 37 Console.WriteLine ( "Person: {0}", newPerson.Name ); 38 } 39 // wait for enter 40 Console.ReadLine ( ); 41 } 42 } 43 44 45 // create some classes to represent a person 46 [Serializable] 47 public class Person ...{ 48 public Person ( ) ...{ 49 this.HomeAddress = new Address ( ); 50 } 51 public string Name; 52 public Address HomeAddress; 53 public string HomePhone; 54 public string CellPhone; 55 public string Email; 56 57 public override string ToString ( ) ...{ 58 return this.Name; 59 } 60 } 61 62 [Serializable] 63 public class Address ...{ 64 public Address ( ) ...{ 65 this.Street = new List<string> ( ); 66 } 67 public List<string> Street; 68 public string City; 69 public string State; 70 public string ZipCode; 71 } 72}
Output
{"CellPhone":"708-867-5309","Email":"foo@bar.blarg","HomeAddress":{"City":"Burbank","State":"IL","Street":["1234 Middle Ave."],"ZipCode":"60459"},"HomePhone":null,"Name":"Ryan Conrad"}

Person: Ryan Conrad
Download ALittleClass.03132008.zip [5.49 KB]
Technorati Tags:[ A Little Class ] [ json ] [ System.Runtime.Serialization ] [ DataContractJsonSerializer ] [ C# ]
Filed Under [ C# ]
Ryan Conrad posted @ Thursday, March 13, 2008 1:15 PM | Comments (0)
A Little Class (System.Windows.Forms.TextRenderer)
I meant to post this on Friday but was unable to do so. So today's Little Class is the TextRenderer class in the System.Windows.Forms namespace. The TextRenderer is used draw text in a Rectangle applying automatic formating to the text if it doesn't fit in the Rectangle like adding an ellipse to the end of the text.

Code

1using System; 2using System.ComponentModel; 3using System.Data; 4using System.Drawing; 5using System.Text; 6using System.Windows.Forms; 7 8namespace ALittleClass ...{ 9 public partial class ALittleForm : Form ...{ 10 public ALittleForm ( ) ...{ 11 InitializeComponent ( ); 12 } 13 14 // I will draw a message on the form when the form paints. 15 protected override void OnPaint ( PaintEventArgs e ) ...{ 16 base.OnPaint ( e ); 17 // set the message that will be drawn on the form. 18 string message = "Did you learn anything today?"; 19 20 // draw the string in a rectangle that it will not fit in 21 e.Graphics.DrawString ( message, this.Font, SystemBrushes.WindowText, new Rectangle ( 5, 5, 100, 25 ) ); 22 23 // now using the text renderer, we can put the text in the same size rectangle, but 24 // using the renderer, we can tell it to auto ellipsis the text that doesn't fit. 25 TextRenderer.DrawText ( e.Graphics, message, this.Font, new Rectangle ( 5, 40, 100, 25 ), 26