But it works on my PC!

The random thoughts of Richard Fennell on technology and software development

Dropping build output to source control in TFS11

One of the nice new feature of TFS11 is that you get a third option for what to do with your build output

  • Don’t copy output anywhere – good for CI builds that nobody will ever consume, just used to run tests
  • Drop to a UNC share e.g. \\server1\drops – the default and used 9 times out 10
  • The new one - drop to source control e.g. $/myproject/drops.

The advantage of this new third option is your build agents can place the files they create in a location that can be accessed by any TFS client i.e. in the source control repository. A user no longer needs to be on a VPN or corporate LAN to be able to see a UNC share.

But remember, just because the builds are in source control does not mean that the build don’t still follow the normal build retention policies, so they will not accumulate forever, unless you want them to.

Now some teams will have good reasons as to why the don’t want builds going into source control. Deployments to a NuGet server and the like will be a far better system for them. This is still all possible, it is just down to build process template customisation. You have not lost any options, just gained another one out the box

But what about building Java via Ant or Maven within TFS using the Build Extensions? Well at this time the process template used to create this type of build from within Eclipse has not caught up with this new feature. However if you really want it you can do the following

  1. Create a TFS build in Eclipse that drops to a UNC share
  2. Open the build definition in VS11
  3. Edit the drops location to point to a location in source control and save the build

    image
  4. When you trigger a new build and you should get you drops in source control. Note in the confirmation dialog you can see the source control based path but you can’t edit it (if you try you get an invalid path error)

    image

Team Explorer Everywhere is now free

It was announced overnight that TEE is now free. What does this mean?

It means if you do not have to buy TEE as some extra software if you already have a TFS CAL. This removed a barrier to adoption for developers who work in heterogeneous systems, there is no extra cost to integrate Eclipse as well a Visual Studio with TFS .

If you want to find out more about TEE why not come Black Marble’s free webinar I am delivering on the 19th?

Two Team Explorers in TEE 11 Beta – twice as good?

When you install TEE11 Beta in Eclipse you will notice their are two Team Explorer windows

  • Team Explorer 2010 – The old style window
  • Team Explorer – The new VS11 style window

image

This is an artefact of the beta as TEE transitions to the new VS UI.

I would recommend you use the new one as this will be the experience going forward. I certainly would not recommend having both open as I have shown in this screenshot 

A bit of an edge case – Using Git-TFS to get the best (or worst?) of both worlds

Background

Whilst at the Microsoft MVP summit there are a number of MVP2MVP sessions, these are similar to DDD style sessions with MVPs presenting as opposed to Microsoft staff. One I found really interesting was one by Richard Banks based on his post on using GIT with TFS. Now this was a usage of source control tools I had not considered, a mixture of Git and TFS (or could be Git to SVN, similar tools are available)

Why do you want this usage? Especially with local workspaces coming in TFS11?

The simple answer is it allows a developer to have the advantage of Git’s multiple local versions of a given file, that they can branch, merge and rollback to as required. All prior to pushing all the changes up to a central TFS server (as opposed to GitHub or a company central Git repository).

OK lets face it this is an edge case, and it is not helped by the usage being command line driven, as opposed to be integrated with the IDE (real developers don’t use a UI or mouse, so that is OK – right?). So to try to make life a it easier I would suggest also installing Posh Git.

Setup

So what is required to get this running, if you like me a fairly new to Git there are a couple of gotcha’s. Here is the process I followed

I used Chocolaty (think Nuget for applications) to install tfsgit, this handles the dependency for the Git client

cinst tfsgit

Next I install poshgit

cinst poshgit

It is essential that you edit your Windows PATH environment variable to point to both the Git and the TFSGit folders as this is how Git picks up the extra Tfs commands, it should be something similar too this

PATH= $PATH;C:\Program Files (x86)\Git\cmd;C:\tools\gittfs

Finally for poshgit  you need runs its install script (in a PowerShell windows with elevated privileges), so it can report the number of file changes in the command prompt (note the prompt only changes when you are in a Git folder)

c:\tools\postgit\..some version\install.ps1

So hopefully this will get you going, so you can try this interesting edge case.

For more general chat on Git and distributed source control try this recent Herding Code podcast

Installing the TEE11 Beta as an upgrade to the plug-in in Eclipse

The big news today is is that Microsoft released the VS11 Beta, part of which is Team Explorer Everywhere (TEE). (Oh they also release something called Windows 8 too – whatever that is)

Whilst upgrading my TEE instance in Eclipse (Indigo) I hit the same gotcha as I had when I originally installed TEE (in Eclipse is in your ‘c:\programs files’). On Windows, if UAC is enabled you have to run Eclipse as administrator to do the plug-in else you get the error message.

image

As soon as you start Eclipse as administrator the upgrade works perfectly, you can then restart Eclipse as normal and all is OK

TFS 11 and VS 11 Announcements

Microsoft have made a few announcements today

On Brian Harry’s Blog

  • In the TFS 11 range there will be a new download of TFS, called Team Foundation Server Express, that includes core developer features:
    • Source Code Control
    • Work Item Tracking
    • Build Automation
    • Agile Taskboard
    • and is free for 5 users (you buy CALs to add more)
  • Visual Studio Express will support TFS

On Jason Zander’s Blog

  • A sneak peak of details of the upcoming  VS11 and TFS 11 beta

For more details read the full posts I have linked to, and look out for the beta that will out on the 29th

You don’t need to keep that old TFS server to support older versions of Visual Studio

I have recently spoken to a number of people who were under the impression that older versions of Visual Studio could not connect to TFS2010. This is not the case. So for example you do not need to keep a TFS2005 running for your VS2005 clients.

Why you might ask does this question even come up? VS2010 can build any .NET 2.0 –> 4.0 project so why not upgrade all your projects to VS2010? The answer is that products such as Biztalk and SQL Business Intelligence use older versions of the Visual Studio Shell e.g. so for SQL 2008 BI you are using in effect VS/Team Explorer 2008. Though it must be said this issue is getting better currently a BI developer still ends up having to use VS 2008 (until SSDT arrives with SQL 2012)

Also some companies may just have a policy to stay on a version of VS for their own reasons.

Either way this is not a barrier to using TFS 2010. The key to getting these older versions of Visual Studio to talk to TFS2010 is only a matter of applying the correct patch sets, so for

All the products can be installed side by side.

Another point to note is that if you are using any of the TFS 2010 PowerTools and want the same features in old versions of Team Explorer you must also install the 2005 and/or 2008 PowerTools versions. Even if the 2010 PowerTools are installed, they will not be found by the 2005 or 2008 clients. The most common time you see this issue is when using check in policies.

For those of you working with VS2003 or VB6 all is not lost, you too can use TFS 2010, you just need Team explorer 2010 installed and the MSSCCI  provider

Hope this post clears up a bit of confusion.