VSTS Sessions at PDC

October 28, 2008

I’m currently at PDC in Los Angeles and on day 1 of the conference I followed already the session of Cameron Skinner A lap around VSTS2010 and the session of Brian Harry Cool New Features in TFS2010.

With Visual Studio Team System 2010 (built entirely in WPF by the way), Microsoft is more and more focusing on the needs of enterprise development teams. Imagine that VSTS wasn’t available anymore … Would it still be possible to manage the software development process of your applications? I’ve really seen some key features of VSTS 2010 (especially in the Architect Edition and Team Foundation Server) that will rock! Wishing those features were here already!

Other VSTS related sessions at PDC :

  • Software Diagnostics and Quality for Services in VSTS
  • Agile Development with VSTS
  • Overview of Visual Studio Team System Database Edition
  • Visual Studio Debugger Tips & Tricks
  • Leveraging Virtualization to Improve Code Quality with Team Lab in VSTS
  • Improving Code Quality with Code Analysis
  • Improving .NET Application Performance and Scalability
  • Architecture without Big Design Up Front
  • TFS: How We Use It at Microsoft

The bad news is that I won’t be able to follow them all because some are scheduled at the same time … The good news is that all sessions will be recorded and made available to the public on the PDC website.

Source Server for TFS Builds

October 23, 2008

This is not yet a widely known practice in the field, but setting up a Source Server for TFS Builds in an enterprise development environment can be extremely valuable.

My friend and ex-colleague Jelle Druyts wrote a few months ago an excellent blog post about how to set up a Source Server for TFS Builds.

Anyone who will reference assemblies that are built with a source server enabled TFS Build will be able to debug those assemblies in the original source code … great for framework code for instance!

When an assembly is “source server-enabled”, the pdb file will contain the full path and the exact version of the file in source control that was used to build that assembly. If the debugger then enters a method, Visual Studio automatically downloads that correct file, places it in a local cache, and opens it for debugging. This is super sweet!

If you follow the guidelines of Jelle, you need to add the custom target RunSourceServerIndexing somewhere in your Team Build script, but he doesn’t specify exactly where you need to include this.

Well, you have two options : you can do this in your TFSBuild.proj file or you can also put this custom target in an underlying .targets file to make it more reusable. The TFSBuild.proj file is the easiest option, but I would recommend an underlying .targets file. In fact it’s always a good practice to make an underlying .targets file for all your common Team Builds. The idea is to make your .proj file as clean as possible and put all the logic and commands in an underlying .targets file.

In the image above you can see that I’ve created a specific target for all Compuware Team Builds on the Build Server. This .targets file must be imported in all TFSBuild.proj files and to enable source server for my Team Builds, I’ll just need to create a boolean variable in my TFSBuild.proj and pass it to the Compuware.targets file.

The Compuware.targets file will do all the required steps in the background. Note that the default is set to false for the variable SourceServerIndexing.

If you follow this pattern for other build tasks, you will end up with a clean TFSBuild.proj file and you will only need to pass booleans (and/or other variables) to the underlying .targets file that will contain all the reusable build tasks. Note that automatically all TFSBuild.proj files will import the default Microsoft.TeamFoundation.Build.targets file. Make sure that you never edit this master file, because it may jeopardize the working of your Team Builds when you need to migrate to another version of MSBuild.

Another small issue I came across when following the guidelines : the location where to drop the TFIndex.cmd file may be different than pointed out in the document (due to a different default location of the Debugging Tools). If that’s the case you must also check the location of this file when you set the custom target RunSourceServerIndexing.

If you haven’t taken the time to explore the possibilites of a Source Server for your TFS Builds, please do so now! You won’t regret!


October 18, 2008

From Wikipedia

A fully qualified domain name (or FQDN) is an unambiguous domain name that specifies the exact location in the Domain Name System’s tree hierarchy through to a top-level domain and finally to the root domain. Technically, a FQDN has a trailing dot (for example: somehost.example.com.), but most DNS resolvers will treat any domain name that already has a dot as being an FQDN and add the final dot needed for the root of the DNS tree.

A lot of companies will use FQDN what means that Team Foundation Server won’t work with the default installation procedure. At first sight, you might think it works, but for Windows SharePoint Services and Reporting Services it won’t! There’s a pretty good blogpost from Buck Hodges available that guides you how to modify the default TFS configuration. Here’s what I did to get TFS working with FQDN :

  • Run tfsadminutil activateat MyFQDN. This command (tfsadminutil can be found in the Tools folder of the TFS installation folder) will activate the FQDN computer as the TFS application-tier server. One of the executed tasks is the modification of the global TFS web.config (config file can be found in the Web Services folder of the TFS installation folder). You may verify the TFSNameUrl setting in the configuration file. I also manually added the appsetting TfsUrlPublic with as value the http://*FQDN*:8080 to force FQDN references in e-mail notifications. Another task the command does is changing the TFS service interface. You may verify this in the tbl_service_interface table of the TfsIntegration database. All urls should now match the FQDN. Before all urls contained the netbiosname of the computer.
  • Update registry settings BaseReportsUrl and ReportsService with my FQDN at HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\TeamFoundation\ReportServer\80\Sites.
  • For WSS 3.0 to work with TFS 2008, I still had to add an alternate access mapping (see blogpost Buck Hodges how to cope with that).

No code coverage result with Team Build?

October 10, 2008

When creating a new Team Build with the Build Wizard in TFS 2008, it may be possible that you won’t have code coverage results while you have this option enabled in your testrun configuration file. This depends on how you selected your tests to run …

  1. If you have chosen to run tests that are listed in a Test List, then there won’t be any problem : code coverage results will be available because all testrun configuration settings will be picked up in the testrun configuration file via the .vsmdi file.
  2. If you have chosen to run tests with the TestContainer option, then the testrun configuration file is not picked up because there won’t be any trace of a .vsmdi file in your build project file. You may fix this by manually adding the following line to your .proj file.


    This line (to be added in PropertyGroup of .proj file) will pick up the test run configuration file and will control the way tests are run.

Rosario becomes Visual Studio 2010

October 2, 2008

On September 29, 2008, Microsoft unveiled the next version of Visual Studio : codename Rosario will now officially be replaced by Visual Studio 2010, pronounced as Twenty-Ten or Two Thousand Ten.

Highlights of the new version include the following :

  • Modeling tools
  • Improved efficiency throughout the test cycle
  • Substantial improvements in collaboration capabilities

Another announcement was that the feature sets of the Team System Edition for Software Developers and the Team System Edition for Database Developers will be merged into one single product for the release of Visual Studio 2010. As from October 1, 2008, owners of a license of VSTS Team Dev 2005/2008 become now also the owners of a license of VSTS Team Database as a benefit to Software Assurance agreements.

More information on Visual Studio 2010 can be found here.

A bunch of videos on the next version of Visual Studio Team System have also been posted on Channel 9 due to the Week of Team System 2010. Good stuff! Can’t wait to see some live demos at PDC in Los Angeles. On November 27, 2008, I will try to redeliver some content on the new features of Visual Studio 2010 on the Visual Studio User Group event at Compuware.

A little bit of codename history :

  • Whidbey became Visual Studio 2005
  • Orcas became Visual Studio 2008
  • Rosario became Visual Studio 2010

More on Microsoft codenames at Wikipedia.

About this blog

October 1, 2008

My name is Pieter Gheysens and I’m working as a .NET Consultant and Team Lead for Compuware Belgium. I already have a blog on .NET Development and I also blog there about the VISUG community events in Belgium which I organize as a User Group Leader.

Recently I decided to start a dedicated blog on Visual Studio Team System (VSTS) and Application Lifecycle Management (ALM).

IMHO VSTS is currently the best solution on the market to deliver quality enterprise software in a controlled way. Whether you are a 5 person enterprise or a 1000 person enterprise, Team Foundation Server can help by making collaboration and communication easier than ever. You need good people in a software development team, but you also need the right tools and processes in place for your people to do their best work. That’s where Microsoft Visual Studio Team System comes into play. It’s an integrated Application lifecycle Management (ALM) solution comprising tools, processes, and guidance to help everyone on the team improve their skills and work more effectively together.

On this blog I would like to share some best practices about using Visual Studio Team System and Team Foundation Server. Tips & tricks to make us more productive is what we all want not? Team System can be used out-of-the-box, but the product cries for customization and that’s where we all need some guidance. We should adopt Team System to fit into our process and not the other way around! I will also focus on the upcoming release(s) of Visual Studio Team System.

So, stay tuned for more!