<2006 December>

On this page...



Member of...

ASP Insiders

MVP Visual Developer ASP/ASP.NET

Enter CodeZone

Blog Categories



Deutsche Resourcen


Sign In

#  Wednesday, 27 December 2006


The idea for this VS Team System version control checkin policy came up in the week before Christmas when I was pointed to one of the shortcomings of TFSCCPolicy, namely that it would flag commented-out methods as missing code comments. That triggered me looking at the source code and I saw that it was using regular expressions.

Why use RegEx when you can use a full-blown parser engine with a DOM? Well, that's what I thought and therefore got in touch with Daniel, technical lead of SharpDevelop. We discussed two potential ways: either going to the metal using NRefactory alone, or go it easy using the DOM and visitors. He even supplied me with a few lines of code to get started - of course for the latter option because I am a lazy coder.

So I set out yesterday to write that checkin policy. To make it really useful, I set up a library project which would contain all the logic, a unit test project for it, plus the actual policy project. The advantage? Well, the logic library can be reused in an MSBuild task, the idea is as follows: calculate the "comment coverage" just like you can do with code coverage and unit testing. (Sorry, but this isn't part of the package just yet)

Given that plan, I of course got around to the policy project as the last one today. When I was pretty much done, I set out to test it for the first time inside VSTS - whoa, what a surprise. It balked almost immediately. You can read my quest for enlightenment here, the main takeaway: don't outsmart yourself when you create a checkin policy which consists of multiple assemblies that don't live in the GAC.

That way I at least got around to deploy my first project using ILMerge. There is only one downside to using ILMerge - the merged assemblies don't retain their version numbers, which can be seen in this screenshot of the configuration dialog (NRefactory should be 2.1):

Aside from this minor glitch, the checkin policy is working fine. What can it do / what can't it do at the moment:

  • It is currently limited to C#. VB.NET will be added later, all I need to do is instantiate the parser. It is as easy as that.
  • Auto-update when files are saved. Someone please hit me with the clue stick.
  • It doesn't exclude all auto-generated files, just the .designer files like TFSCCPolicy. I need to sit down and make a list.
  • Not all elements correctly report the line number.
  • Unit tests - well, only one at the moment. More to follow of course, including the full build automation.
  • Cleanup in the logic library.

Other than that I would love to get feedback from you on this initial version! Simply post feedback on this blog entry.

Finally, the source code (BSD-licensed by the way) and the binaries:

CCCP10_20061227.zip (964.34 KB)

If you are interested in using it only, then please go to the Drop directory. For those interested in the code: start with the solution file in the Source folder (and then go to Setup).

Updates to the code / checkin policy will be linked to at the end of this post, so feel free to bookmark this blog post for your reference on CCCP.

Wednesday, 27 December 2006 15:17:45 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Friday, 22 December 2006

Today I got around to trying CCNetConfig, which provides a UI for editing CruiseControl.NET's ccnet.config file. Thanks to the SharpDevelop project, I have a rather good test case with a couple of continuous integration plus nightly builds:

Our ccnet.config file is maintained by using Notepad (yes, you read that right). As such, I added a few <!-- --> comments here and there, mostly for pointing me to documentation, blog articles or just disabling a feature temporarily. Therefore, you can already guess my biggest gripe: on saving the file, it is auto-reformatted and all my comments are gone.

Other than that, it is a really good way of editing ccnet.config especially because all properties are easy to edit and you are presented the documentation automatically, no more searching around for tag / attribute help on the Web.  Overall: very useful if you don't spend all day being release manager.

Friday, 22 December 2006 18:00:24 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


Michael Howard has all the links in this blog entry Online Security Sessions from TechEd IT Forum Available. Topics include: malware cleaning, UAC internals, social engineering, Vista kernel changes, Vista firewall and IPSec enhancements. Which reminds me that the post-conference DVDs should tip up in my mailbox rsn.

Categories: .NET | Security | Training and Conferences | Vista
Friday, 22 December 2006 16:46:01 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Monday, 18 December 2006

Two weeks ago, during this year's AspInsiders summit, I got ahold of a 1982 (!) copy of "The Soul of a New Machine" at Half Price Books. I still have to decide whether the equally ancient Continental boarding pass DEN-SEA used as a bookmark will be kept too (I guess so), but the book is definitely worth your time - be it for a computer history lesson, or on the "signing up" concept and all other project management topics being touched on (without it being a pm book). The story in itself is more than fascinating, so although old by now, it does come highly recommended.

Categories: Books | this
Monday, 18 December 2006 17:40:42 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Friday, 15 December 2006

From Express to Team Suite & Team Foundation Server. Get it here

Categories: Team System | Visual Studio
Friday, 15 December 2006 09:46:52 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Tuesday, 12 December 2006

The most useful utility for deployment (or name your task, like directory comparison) is most decidedly Robocopy, which previously shipped only as part of the OS resource kits. Now with Windows Vista, however, Robocopy comes in the box.

To get up and running quickly, I recommend that you get Robocopy GUI:

It makes getting started with Robocopy a tad easier.

Categories: Administration | Vista
Tuesday, 12 December 2006 21:01:27 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


This is the firewall settings dialog - much the same as we know it from Windows XP already:

However, once you fire up the management console (mmc.exe), you can add snapins for advanced firewall configuration (ok, IPSec is one of my personal favorites and not necessary to configure the firewall per se...):

Once you have done this, you can now configure the firewall like, well, an administrator would expect - rule based:

Categories: Administration | Security | Vista
Tuesday, 12 December 2006 20:46:50 (W. Europe Standard Time, UTC+01:00)  #    Comments [1]


#  Sunday, 03 December 2006

The Feature Specifications for Visual Studio and .NET Framework "Orcas" page has a document on it entitled Get Latest on Check Out. The reason I bring this up is that I had been asked during TechEd in Barcelona at the ATE booth (by a fellow ATE) whether the default behavior for Team Foundation Version Control (TFVC) - make the current version of the file in the workspace editable - can be changed to get latest first, then make editable. 

The problem that prompted the question is that more often than not, a developer is likely to forget to do a Get Latest first and only then start editing. If forgotten, this can lead to unnecessary merge operations. The good news is that the feature will be available, the bad news is that it isn't today.

Categories: Team System | Visual Studio
Sunday, 03 December 2006 04:07:38 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


#  Thursday, 30 November 2006
Brian Harry has posted a blog entry on the road ahead for TFS, even beyond Orcas.
Thursday, 30 November 2006 19:08:04 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]


Having Virtual PC 2007 Beta, the virtual machine additions for Linux Beta plus a disc of Ubuntu 6.10 Linux sitting on my desk simply proved irresistible to me. Thus: create new virtual machine, slide in the DVD, and off we go.

That was the plan until I hit a snag: on switching from text mode to graphics mode, the screen garbled. Wait! I had seen this before: the emulated graphics card of Virtual PC advertises video modes it cannot actually display. And I sorted it out previously and blogged about it in mono::live. So I did the Ctrl+Alt+F3 dance and pasted the script - presto!

Now for the VM additions - of course used to the Windows way of things, I simply mounted the ISO image. Nicely opens up in the File Browser, where the f*ck is a Run As command here? OK, switch to terminal, su (I have to admit that took me a while including pestering a friend because I had already forgotten all the gory details). To spare you the details, after some twenty minutes of fiddling I decided to take a deep breath and actually read (gulp) the README that comes with the Linux additions.

Setup prerequisites step number two caught my attention:

A kernel module of the Additions is built at compile time. So, the virtual machine should have the Linux kernel source and build tools installed

No way. The mention of operating system & compile yourself makes me cringe. Thank you, but no thank you. I will live without the additions. There is no friggin way I am doing the dance, I am way too old, and sorry, this is 2006. I don't need that "power of Linux" if all administrative usability goes out the window (Note: I am a developer, and especially because I am one I totally balk at the idea of having to compile my applications / drivers before I can use them - that is ridiculous).

Oh, one minor roadblock was easy to solve - the networking stuff. System / Administration / Networking and then enable the Ethernet interface:

Now on to exploring.

Categories: L-Word Stuff | Virtual PC
Thursday, 30 November 2006 09:52:30 (W. Europe Standard Time, UTC+01:00)  #    Comments [1]


© Copyright 2017 Christoph Wille

newtelligence dasBlog 2.3.9074.18820
Subscribe to this weblog's RSS feed with SharpReader, Radio Userland, NewsGator or any other aggregator listening on port 5335 by clicking this button.   RSS 2.0|Atom 1.0  Send mail to the author(s)

Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.