Thursday, April 30, 2009

I normally don't just post links to another post but this post by Brian Harry really got me excited about TFS 2010.  It appears Microsoft has addressed almost every limitation of the TFS 2008 installation and configuration.  He explains all of the components of TFS and provides some great screenshots.  Check it out!

http://blogs.msdn.com/bharry/archive/2009/04/30/tfs-2010-admin-operations-setup-improvements.aspx

Mike

Thursday, April 30, 2009 10:03:57 PM (Central Standard Time, UTC-06:00)  #    Comments [0]  | 
Monday, April 27, 2009

I am excited to announce that I am going to be presenting at the next Omaha Team System User Group meeting on May 26th, 2009.  In addition to what I think is a great topic that I am looking forward to presenting, Deliveron Consulting Services is co-sponsoring the meeting and giving away an XBOX 360, a NFM gift card, and two TFS books!  WOW!  I look forward to seeing everyone there. 

Here’s the information on the presentation:

Installing and Configuring Team Foundation Server 2008

This presentation provides an overview of TFS 2008 and demonstrates best practices, lessons learned, and “gotchas” installing and configuring TFS 2008.  The overview explains the architecture and components of Team Foundation Server 2008 and recommended server configurations.  The demonstrations will include using the Best Practice Analyzer, Setting User Permissions and using the TFS Admin Tool, and creating and configuring a Team Project from start to finish.  The configuration process will include recommended settings, source control folder structure, and creating appropriate notification.  The presentation will conclude with techniques and lessons learned for troubleshooting problems with installations.

About me

Mike Douglas is a Solution Consultant at Deliveron Consulting Services where he provides end-to-end solutions and TFS installation, configuration, and custom development for clients.  He has over 11 years experience building enterprise level applications on a variety of .NET technologies including WCF, Web Services, ASP.NET, Disconnected Smart Clients and Data Synchronization, BizTalk, and Team Foundation Server.  Mike enjoys trying to keep up with the constant change and evolution of .NET.  Mike is an experienced presenter having spoken at several Omaha .NET User Group meetings on CSLA.NET, Subsonic, and TFS.  He also spoke at the 2008 ESRI International User Conference on a GIS integration project he helped lead. Mike actively maintains the open source project, Team Deploy, on CodePlex for deploying MSIs using Team Foundation Server.  Mike also enjoys sharing his experiences in Code Generation, CSLA.NET, and TFS on his blog at www.CodeSmartNotHard.com.

Date and Location

May 26th, 2009

Farm Credit Services of America
5015 S 118th St
Omaha, NE 68137

For more information and to register, visit the Omaha Team System User Group site.

Monday, April 27, 2009 10:05:33 PM (Central Standard Time, UTC-06:00)  #    Comments [0]  | 
Wednesday, April 22, 2009

Today I am excited to announce the release of Team Deploy 2.0.  Additionally, the total download count of Team Deploy has passed 1000 downloads!  

Team Deploy is an open source package of custom build tasks designed for Team Foundation Server 2008 for deploying MSIs to clients and/or servers.  There is also a build notification task for lava lamps or street lights with your builds.

The enhancements and fixes for 2.0 include:

  • Added TaskBase class for common functionality for example,BuildUri and TeamFoundationServerURL. These properties are now optional. It will basically skip the build step display if these properties are not set. All tasks inherit TaskBase.
  • Added check to "StopService" so it only does it if the service exists and it "canstop". (bug)
  • Added new RemoteExecute task. Now call any executable on target machines. This also has a WaitForExit property to be able to wait for the response or not from the target machine.
  • Added setup MSI to install Team Deploy instead of manual steps.
  • Added IgnoreExitCode attribute to the base class. If the task checks for exit code it now will log it as an error if the code > 0 unless IgnoreExitCode == true.
  • Fixed a problem where with the new version of pstools, it wouldn't work unless session zero is specified.
  • Updated the deploy task to ignoreexitcode when calling the Kill task
  • Added logic to stopservice to not try to stop if it isn't installed or started.

    Future updates to Team Deploy will include breaking out the build light notification portion to a new CodePlex project I created called TFSBuildLight.  Also 2.x versions will continue to be for Team Foundation Server 2008.  New 3.x versions of Team Deploy will be developed for Team Foundation Server 2010.

     

    Team Deploy is a free to download and use.  You can find it at http://teamdeploy.codeplex.com.

  • Wednesday, April 22, 2009 3:28:00 AM (Central Standard Time, UTC-06:00)  #    Comments [2]  | 
    Wednesday, April 15, 2009

    I wanted to take a look at writing SQL Reports for TFS.  I was going to install the Business Intelligence Studio for SQL Server 2005 but I thought it would be better to use the latest edition of SQL Reporting Services in SQL Server 2008.   So I decided to upgrade my TFS Test Server to SQL Server 2008.  This is a single server install of TFS.   I ran the SQL Server 2008 Upgrade Wizard.     Most of the steps were straight-forward.  I only ran into one roadblock that I was able to fix and I documented below.  Here’s the steps.

     

    First I chose the “Upgrade from SQL Server 2000 or SQL Server 2005” option.

    image

     

    I kept the default settings for all of the steps except when it asked what instance I would like to upgrade.

    image

     

    All of the checks passed but one.  I got the following error.

    Rule "Security Group SID (Security Identifier)" failed.

    image

    http://go.microsoft.com/fwlink/?LinkId=94001

    I went to the link but it didn’t help.  I searched on the web for for the error and I found the fix here.  Basically I had to manually replace the invalid SIDs with the new one.

     

    To find the correct SIDs, I ran the command prompt utility:  whoami /groups

    image

     

    If you have multiple editions of SQL Server installed make sure you are in the correct one in the registry.  Look at the Edition key

    image

     

    I pasted the correct SIDs into the registry keys

    image

     

    I fixed the ones in MSSQL.2 but I was still getting the error.  I checked the log file %ProgramFiles%\Microsoft SQL Server\100\Setup Bootstrap\LOG\Detail.txt and here is the error.

    2009-04-14 23:24:25 Slp: Sco: Attempting to open registry subkey SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.3\Setup
    2009-04-14 23:24:25 Slp: SqlSidRule.GetSidValue - reading value name ASGroup
    2009-04-14 23:24:25 Slp: Sco: Attempting to get registry value ASGroup
    2009-04-14 23:24:25 Slp: Sco: Attempting to get account from sid S-1-5-21-3621347759-1475631895-1437307089-1014
    2009-04-14 23:24:25 Slp: Sco: LookupAccountSid failed for SID S-1-5-21-3621347759-1475631895-1437307089-1014
    2009-04-14 23:24:25 Slp: SqlSidRule.EnsureGroupExists - Exception caught and ignored. Returning false. Exception message is No mapping between account names and security IDs was done.

    I grabbed the SID for the ASUser and it worked!

     

    The wizard continued and finished.  I launched Visual Studio and TFS is working properly.

    Now I can look at the SQL Reporting :)

    Wednesday, April 15, 2009 2:03:00 AM (Central Standard Time, UTC-06:00)  #    Comments [0]  | 
    Sunday, April 12, 2009

     

    Why use a virtual machine for development?

    There are a couple things I like about doing development on a virtual.   One of the best features is creating the image once and then being able to have the other developers use the same image.  This is a big time saver and ensures consistency across the developers.  In addition to having all of the developers use the same image, this also allows us to have separate images for each of our clients.  This obviously allows us to keep our clients data and code separate and helps prevent 3rd party controls from conflicting.

     

    Performance

    Defrag.  Defrag.  Defrag.   This is must whether you are using a virtual machine or physical only.   I have a created a scheduled task to defrag my machine every day.  Here are some steps for creating the scheduled defrag.  I do it daily because the more often it runs the quicker it will complete.   Newer PCs with Intel processors have a virtualization bios setting that is turned off by default.  This is supposed to help virtualization performance.   When I enabled it on my laptop, it caused my machine to temporarily quit responding.  I ended up turning it back off.  I recommend enabling it and trying it.   The other option to consider is where to save the virtual disk.   My laptop has a 7200rpm hard drive and I have a 5400rpm USB Buffalo external drive.  I thought the virtual would run better from my local drive but since that is the drive with my swap file and the OS, the virtual image runs faster from my external drive.   Both USB 2.0 and Firewire (400) are half duplex so technically data can’t transfer both directions at the same time on the USB.   Firewire 800 does support full duplex.  If your computer supports this, eSata, or has a second hard drive, I recommend using one of the first, USB 2.0 second, and the C: drive last.

     

    Configuring for Team Foundation Server 2008

    When creating your base image, install of of the required software.  For TFS, this includes VSTS 2008 (any edition), Team Explorer, and SP1.   Do not connect to the TFS Server.   TFS will automatically create a workspace for your machine that is not needed.   TFS workspaces use the machine and user as the key for unique workspaces.  The workspace displays the machine name but uses the machine’s SID (basically a machine GUID).   Each copy of the base image that is created, needs to have the machine name and SID changed.  The official way to do this is to use SysPrep.    I found a handy utility by SysInternals (owned by Microsoft) that can do it called NewSID.  there is a disclaimer on the website stating that it isn’t officially supported by Microsoft but I have been using with XP and Windows 2003.  I haven’t run into any problems.   It is a simple wizard that allows you to enter the new machine name and it creates a new SID.  After the reboot it is ready to go.

    If you make a copy of a machine that has already been connected to TFS, even after updating the machine name and SID you could still get the error message “The workspace “USER;MACHINENAME” already exists on computer MACHINENAME. TFS caches this information on the machine.  To update the cache run use the Visual Studio Command Prompt and run

    tf workspaces /updateUserName:USERNAME/s:http://tfsserver:8080

    Run this for both the original user and the new user of the machine.  This should clear the cache and allow you to create a workspace to the same folder as before.

    I hope this helps.

    -Mike

    Sunday, April 12, 2009 1:15:00 AM (Central Standard Time, UTC-06:00)  #    Comments [0]  | 

    Theme design by Jelle Druyts

    Pick a theme: