Erfahren Sie das Neueste zu Team System 2010 an der TeamConf 08 in Zürich

An der Microsoft PDC (Professional Developer Conference) von letzter Woche in Los Angeles wurden viele neue Produkte und Technologien angekündigt, darunter sind Windows Azure, Windows 7, .NET Framework 4.0, Oslo und Visual Studio Team System 2010!

Wer es nicht an die PDC geschafft hat, aber sich trotzdem die neuesten Bits vom neuen Team System 2010 (ehemals Rosario) anschauen möchte, der sollte an die TeamConf nach Zürich kommen.

Die TeamConf findet dieses Jahr zum ersten Mal statt und zwar vom 1. – 3. Dezember im Renaissance Hotel in Zürich. Ziel der Konferenz ist es, den Teilnehmern eine breite Kommunikationsplattform rund um das Thema Microsoft Visual Studio Team System (VSTS) und Microsoft Team Foundation Server (TFS) zu bieten.

In meinem Vortrag werde ich Ihnen die Neuerungen rund um Team System 2010 aufzeigen. Wir werden mit den Aufgaben des Architekten beginnen, indem ich die neuen UML Modellierungs-Möglichkeiten aufzeige, werden weiter zur Entwicklung gehen und schliesslich beim Testing abschliessen.

Am zweiten Vortrag der Trivadis wird Patrick Spieler und Ronny Gächter Ihnen anhand eines unserer realen Kundenprojekte, die agile Software Entwicklung mit Team System vorstellen.

Bei BixiSystems (ein Unternehmen der Securitas-Gruppe) zeigen wir, wie der Software-Entwicklungsprozess auf Basis agiler Prinzipien eingeführt und umgesetzt wird. Wir erläutern, wie durch Neuorganisation der Prozesse und Aufgaben sowie durch die vielseitige Unterstützung von VSTS die zahlreichen Informationen zentral bewirtschaftet und genutzt werden. Dabei steht die nutzenoptimiert Entwicklung der Software unter Berücksichtigung von Kosten und Zeit stets im Mittelpunkt.

Weiter Infos zum Event und Anmeldungen finden Sie unter: http://www.teamconf.ch

Ich freue mich Sie dort zu treffen!

TFS SP1 installation retrospect

After helping a few customers to install TFS SP1, I’d like to note some problems often occurring.

  1. The SP installation package has some problems in dual server configurations and throws an error while installing. To avoid this problems, I always run the command line TFSQuiesce to shutdown all activities before installing.
  2. When the original installation of TFS is run under a specific user (not a general “TFSSETUP” serivce account) and you try to install the SP with another user, you’ll probably get an Exception in the event log called something like this “Could not find stored procedure ‘dbo.GetAccountDisplayMode’” as described on the MSDN forums.
    This happens because the owner of the databases is someone else and the user which installed the SP maybe hasn’t enough rights and therefore the setup wasn’t able to change the DB schema.
    Uninstall the SP and try to run it again under the correct user.
  3. Microsoft has published a hotfix for the issue where check-in event e-mail alert notifications don’t work well after TFS 2008 is configured to point use Work Item hyperlinks to Team System Web Access. Basically you create a subscription to the check-in events and the e-mail you get says this:

Migration complete

Welcome to my new blog location.
After started blogging on my company blog at Trivadis, I decided to move to my own domain and therefore a personal blog.

I’ll write about ALM (Application Lifecycle Managment) with Microsoft Team System and .NET Development in general.
After the completed migration of some post to my new blog, the work category will be synchronized to the offical company blog.

Share ConnectionStrings between projects for each developer differently

Share ConnectionStrings

A customer of mine have a Visual Studio C# solution with more than one project which uses the same ConnectionString. So how can you define your ConnectionString(s) once and share them between projects?
This is how my sample solution looks like. The “Console” and “ServerConsole” projects should use the same ConnectionStrings.

image

I created a XML file called “connections.config” in the solution root folder and added it to the solution via the “Add Existing Item” dialog. This file contains all my ConnectionStrings I need.

Content of connections.config:

   1:  <?xml version="1.0" encoding="utf-8"?>
   2:  <connectionStrings>
   3:    <add name="DefaultDatabase"
   4:     providerName="System.Data.SqlClient"
   5:     connectionString="Data Source=.\SQLEXPRESS;
             Initial Catalog=ShareConnection;
             Integrated Security=True" />
   6:  </connectionStrings>

After that, I add the file to all projects, which are needing the same connections. You need to add the file as “Add As Link” to ensure using the file in the shared location.

image

Now you see the file in your project with a little arrow on the left bottom (linked file).

image

To ensure the file is copied to the build output directory, you need to modify the “Copy to Output Directory” setting of the linked file to “Copy Always”.

image

Now write the following “connectionStrings” section in the “App.config” of your projects:

   1:  <?xml version="1.0" encoding="utf-8" ?>
   2:  <configuration>
   3:    <appSettings>
   4:      <add key="SpecificProjSetting" value="SomeValue" />
   5:    </appSettings>
   6:    <connectionStrings configSource="connections.config" />
   7:  </configuration>

And that’s all. If you now write your code, you always get the shared ConnectionString e.g.:

   1:  public string GetDbConnection()
   2:  {
   3:      return ConfigurationManager.ConnectionStrings["DefaultDatabase"].ConnectionString;
   4:  }

Individual ConnectionStrings for each developer

My second requirements, enabling each developer to have his own ConnectionStrings (they have different Instance-Names), needs only a small addition.

In addition to the “connections.config” file which is under Source Control, each developer can create his own file at the same place with the convention “connections.config.{COMPUTERNAME}” which will not be checked in. In my example my computer’s name is “NIM-50″, so the file is named as “connections.config.NIM-50″.

Edit now each project’s (Pre-Build/Post/Build) property in the “Build Events” tab with the following command lines.

Pre-build event command line:
if exist $(TargetDir)connections.config del $(TargetDir)connections.config

Post-build event command line:
if exist $(SolutionDir)connections.config.$(COMPUTERNAME) copy $(SolutionDir)connections.config.$(COMPUTERNAME) $(TargetDir)connections.config

The “Pre-Build” checks if a “connections.config” allready exists in the drop location and deletes it. If the “Pre-Build” wouldn’t be run, then the old (existing) file will not be overwritten!
The “Post-Build” checks if a specific developer configuration is found and copy/rename it to the drop location. If no one exists, the standard shared config will be used as defined in the project’s include.

Help on installing Team System SP1

Being the first is not always the best, especially if you want to be the first on a new software release ;-) . So if you already want to install the Service Pack 1 for your Team System environment, I want to give you some hints to not getting troubles.

  1. Before installing SP1 make sure you run the Hotfix Cleanup Utility for Visual Studio to cleanup your current installation
  2. If you have Express Edition and normal Visual Studio installed, you can’t update Express before upgrading normal Visual Studio
  3. When upgrading your TFS with an installation of Visual Studio make sure that you first install SP for Visual Studio and then the one for TFS. If you first install TFS SP1, then you can’t update Visual Studio anymore…
  4. Update all your tiers with SP1 (this includes Build Server, Load Controller, TFS and Client) to avoid unpredictable errors
  5. If you working with ASP.NET Ajax you should wait to upgrade, because there could be a bug in the SP. This was reported by Thomas Schissler in his blog post (German).
  6. If you make a new installation of TFS and want to include installing SP1, then look for the updated TFS Installation Guide to integrate SP1 in the installation (there is currently no TFS2008 ISO incl. SP1).
  7. Look for the Readme listing the known issues

As good practice I advice my customers (Production environments) to wait for the next 2 weeks to make sure no big problems will be found.

Rosario’s tiny enhancements (Work Item Queries)

Currently I’m looking at the Rosario CTP’s, what’s new and hot. So this post will hopefully be the first of a series about small enhancements which helps you in the daily work.

Work Item Queries

It’s now possible to group your queries in folders.

image

In VSTS 2008, I created/changed the queries with a prefix for example the “RE – User Stories” or “DEV – My Tasks”. Because if you have many queries, it’s nice to have some sorting. In Rosario you could make folders by process role. Nice!

image

Deleting branches don’t removes them from source control folder properties

Have you ever created a branch in the wrong directory and noticed it too late (after check-in)?
For example, you create a branch under “$/Project/Main/” instead of “$/Project/Dev/”. After you have realized your mistake, you go for a delete on the branch (checking in) and create a new one under “Dev”.
Now go to the branches tab on the source control folder properties and look what you’ve got:
deleted_branch

Your deleted branch will appear in the tree without any information that it was deleted. It’s right that the branch wasn’t removed because TFS handles deletes only with a status change. But I don’t want to see the deleted files, right? Or at least they should be marked as deleted. Because I think this is really confusing, I posted a bug at connect:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=336734

How can I really remove the branch?
To really remove your branch, go for a destroy with the tf command line util.

To remove an item out off source control (not only mark as deleted), run the destroy command:
>tf destroy {BRANCHNAME}

Because you already have deleted the branch, the command will throw an exception that the branch wasn’t found. This is because deleted items will get renamed with a deletion-id suffix. To get the deletion-id, go and run the properties command:
>tf properties {BRANCH_NAME}

Now, after you have the deletion-id, go and run the destroy command again (don’t forget the x!):
>tf destroy {BRANCHNAME};x{DELETION-ID}

The properties window of your source control folder will show only the existing branches :-) .

Team Foundation Server 2008 installation – Errors Part 2

This is my second post about errors which can occur while installing Team Foundation Server.

If you find errors like this in your event log:

Source: MSSQLSERVER
Event ID: 18456
Description: Login failed for user ‘NT AUTHORITY\SYSTEM’. [CLIENT: <local machine>]
Source: Report Server Windows
Event ID: 107
Description: Report Server Windows Service (MSSQLSERVER) cannot connect to the report server database.

and/or for example the TFSSchedulerService does not start after reboot, your SQL services might start to slow. This happens mostly if you install TFS in Single-Server mode.
Other services trying to connect to databases in the SQL Server but this is not completely up and running. To avoid this problem you need to delay loading this specific services.

Go to the registry editor and add a Multi-String Value to the corresponding service entry:

Key: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ReportServer
Right click “New Multi-String Value”
Name: DependOnService
Value: MSSQLSERVER

Do this for all services like ReportServer and TFSSchedulerService. There is also a Knowledge-Base article here.

Error when creating Team Project for TFS 2008 with Team Explorer 2005

Creating a new Team Project within Visual Studio / Team Explorer 2005 connected with a Team Foundation Server 2008 can cause in an error:

Error:
TF30170: The plugin Microsoft.ProjectCreationWizard.Portal failed during task SharePointPortal from group Portal.

Message:
The language id specified in the process template does not exist on the WSS server.

This happens because the 2005 edition does not understand the WSS 3.0 services. Microsoft has released a patch for the Team Explorer 2005 which solves the problem here.

TFS Source Control integration in Explorer

Do you want to checkin your files from the Windows Explorer (Shell Integration) like with Subversion add-ins?

Some people don’t want or need a Visual Studio Team Explorer, because they are none Microsoft-based developers like Oracle DBA’s. But you want to use Team Foundation Server as your source control repository by default, because you like the integration of work items or the main development of your project is in .NET.

Unfortunately, this is by default not available from TFS. But there are two tools around which are closing this gap!

I hope Microsoft will implement this in a future release by it’s own. But there’s now no excuse anymore to say you need a Subversion repository because of the shell integration.