March 2007 Archives

Remote Desktop Connection Dialog: Remote Desktop cannot verify the identity of the computer you want to connect to. This problem can occur if: 1) The remote computer is running a version of Windows that is earlier than Windows Vista. 2) The remote computer is configured to support only the RDP security layer. Contact your network administrator or the owner of the remote computer for assistance. Do you want to connect anyway? When running Remote Desktop from Windows Vista I've been getting the following error popping up everytime I connect.  It is a little alarming and I've never really sat down and figured out what this was telling me - basically I translated this to mean "Vista has a new, more secure Remote Desktop client, you are talking to an older version of the server - is this ok?".  I've been meaning to figure out how to make this dialog go away for a while and was just assuming I was dumb.  However a couple of few weeks ago I had the pleasure of attending the MVP Summit and every single Microsoft employee that used remote desktop to talk to his or her machine somewhere else on campus also got this dialog pop up - so I figured that I wasn't being that dumb after all - or maybe just as dumb as everyone else, which considering the company I was keeping at the time I would take as a compliment.

It took me a while to figure out how to get rid of the dialog when connecting to a known older version of the remote desktop server.  When doing the connection, click on the "Options >>" button and then the "Advanced" tab.  In the "Server Authentication" section, change the authentication option to "Always connect, even if authentication fails".

Then, after a bit of digging around I found this great post from Scott Forsyth who points out that there is a registry key you can also use to control this behavior, add a DWORD value called AuthenticationLevelOverride to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Terminal Server Client and set it to 0.  You will no longer get prompted and the Server Authentication option in the advanced tab will be grayed out.  Obviously that reduces the security when remoting to your machine so it is up to you if you want to take that risk to save you the annoyance of seeing that dialog any more.

Screen shot of the traffic cam tool in action. At the recent MVP summit, I attended a Mash-up lounge event.  It was a bit Web 2.0-ey, but basically they had a bunch of bean bags, fake palm trees, and members of the Windows Live team and some Virtual Earth MVP's around to help folks get up to speed with the Windows Live API's.  (Thanks to Tyler and Robert, Virtual Earth MVP's from InFusion Development for helping me with some sample code to grok).  This is a whole area that I've not really been paying attention to in the past year, so I dropped by to see what the deal was and have a play.

I have to say, I'm impressed.  It is super easy to control the Virtual Earth map control from your JavaScript, and the documentation is pretty decent.  Now, as I freely admit, I am no expert on the differences between the various mapping providers around and their web interfaces - but I will say this; The local.live.com data for Ireland and Northern Ireland is by far the best of the mapping sites that I've seen.  I also love the driving instructions and the custom print capabilities.  I get the feeling that if local.live.com was not made by Microsoft then there would probably be more fuss about it - but hey ho.  I've just come back from a trip to Redmond so I must have had my borg implant secretly added if I'm feeling Microsoft are being unjustly treated :-)

Anyway, on my return, I was having a chat with my good friend Rob Burke about some of the exciting possibilities that the mapping API gives you.  As an example, I did this very quick mash-up of traffic cameras from the Dublin City Council website and a Virtual Earth Map.  It is very crude as it only took me 5 minutes to write the HTML (in Notepad2) and then a further 15 figuring out the lat/long positions of the cameras - but hopefully you'll get the point.  If anyone wants the GeoRSS data I used to create the map then here it is.

Dublin City Center Traffic Cameras - data from Dublin City Council.

Today, I am pleased to announce that Teamprise are offering complimentary licenses of the Teamprise client suite for anyone wanting to use Teamprise to connect to an open source project on CodePlex.  If you want to take advantage of this offer, see the sign up page.

For those of you who don't know, Teamprise offers three clients to help you talk to Visual Studio Team Foundation Server (TFS) from outside of Visual Studio 2005.  They are:-

  • Teamprise plug-in for Eclipse - A plug-in to TFS that gives you full IDE integration inside an Eclipse based IDE.
  • Teamprise Explorer - A stand-alone GUI client for TFS that will runs using native look and feel on multiple platforms including Windows Vista, Windows XP, Mac OS X, GTK Linux, Solaris etc etc
  • Teamprise Command Line Client - A command line client for TFS familiar in operation to Microsoft's tf.exe only ours runs from any platform with the necessary Java JRE

Why are we making this offer?  It was a bit of a no-brainier really.  We'd heard about some projects that wanted to move to CodePlex but couldn't because some of the developers were not running Windows.  We have the necessary technology developed so it would make sense to get it in the hands of as many people as possible.  Also, Teamprise relies on many open source projects to make a living (not least of which is the Eclipse project) - so it seemed like the decent thing to do to offer complimentary licenses to Teamprise for anyone working on an Open Source project.

Don't forget, as well as these clients, if you want to integrate your project build environment then you can take a look at the Ant and CruiseControl integrations we recently made available.

I'm excited to see who takes us up on this offer and which projects make CodePlex their new home.  It's also good to see some choice in the open source project hosting space.  Personally, I'm a fan of the way the CodePlex service works and love the fact that new features are coming out all the time from the team.  If any one has any questions, concerns or comments about this offer then feel free to head over to the Teamprise forums.

Back from the MVP Summit

| 3 Comments

I'm safely back from a fantastic week at the MVP Summit in Seattle / Redmond.  The week itself was very enjoyable and packed with tons of useful information - thanks to Noah and the VSTS team for being our hosts for the week.  While I knew several of my fellow Team System MVP's from previous brief meetings, I've come away from the week with several new friends.  For some photos of the event see Noah's and Willy blogs.

My journey home was nothing short of epic due to some weather difficulties in the New York area over St Patrick's day weekend.  It was one of those journeys that will go down in the Woodward Chronicles of Nightmare Travel Experiences (that always seem to happen on my way home - never on my way to an event).  Now that I have caught up on my sleep, the journey was actually quite funny and (believe it or not) a little bit life changing.  I've just had a phone call to let me know that my checked baggage is on a Taxi ride to my house at the moment as it took an independent route across the world to the one I chose but amazingly seems to have made it into the same country only a couple of days after I did.

VSTS Guidance Wiki

I just found out about the following project going on at CodePlex out of the patterns and practices project which find a very interesting idea that I am going to try and find out if I can contribute to:-

VSTSGuidance: http://www.codeplex.com/VSTSGuidance

Teamprise 2.1 Released

| 1 Comment

Yesterday we made version 2.1 of Teamprise publicly available.  If you've previously installed Teamprise, then I recommend that you upgrade to this version as it includes a number of bug-fixes that while not critical are definitely useful.  People who purchased a Teamprise Client Suite for Version 1 or 2.0 get the upgrade free of charge.  For the full release notes look here

This is the fourth public release from Teamprise since Team Foundation Server went RTM a year ago this month, and we have been continuing to add features based on user feedback.  As has become the tradition - here are some of my favorites.

Work Item Query Editor

Now the Team Explorer in Teamprise is not read only.  You can add / edit queries using a query editor interface very familiar to anyone who has used the one in Visual Studio - importantly meaning any training given on the Visual Studio interface can be happily applied to the Teamprise users.

One really nice feature is that you can take a query generated by the pioneering Teamprise Work Item Search feature and edit it in the query editor - giving you another way to edit queries.

Improved Sync Support in Teamprise Plug-in for Eclipse

The Sync support in the Eclipse plug-in has been totally re-written to make use of some different server side capabilities in Team Foundation Server and is now much much faster, more accurate and places less load on the server - all good things in my book.  Sync was one of the areas I worked on for V1 and but you'd be glad to hear that most of my code was ripped out for V2.1.

External Merge Tool Support

You can now opt to not use the default built-in merge / diff capabilities and use your preferred merge tool instead.  This is one of those requirements that you either care about a lot, or not at all.

Ant Tasks

We now have a suite of Ant integrations to TFS to perform various useful tasks.  For more information see the reference.  We've been using these for a while internally but one of the biggest areas that customers have been asking for help in is in integrated build automation.  The Ant tasks allow you to talk to Team Foundation Server Version Control from Ant.

One of the important things to note about the Ant tasks is that they work by calling out to the "tf" command line client.  We have written the tasks to be compatible with both the Microsoft tf.exe client and our own Command Line Client that comes as part of the Teamprise Client Suite.  Therefore, even if you are not a Teamprise customer you can still download and use the ant tasks on your windows system with Microsoft's client installed.  If you want to run that same Ant script on your Unix / Mac boxes then you can using our client.

Cruise Control Integration

While TFS was in Beta 2, I wrote a CruiseControl.NET integration to TFS to ease adoption of the new tool as a version control and work item repository for existing .NET 1.1 projects.  Now I have written a similar integration to the original Java based CruiseControl (version 2.6) build server - again to ease adoption for existing Java projects.  In common with the Ant Tasks, this integration talks to TFS via the command line so you can use it with either the Microsoft or Teamprise command line clients.  For more information see the manual.

In Conclusion

The plan with both of these integrations is to donate them to the relevant open source projects and help to maintain them if the projects want the them.  At least until they are part of a released version of the relevant projects we will host versions of them at the Teamprise web site for free download by anyone, regardless of who's TFS command line client they are using.

If you take a look at the release notes, you can see a bunch of other features and improvements we have made that I haven't called out here - there are just so many small improvements that add up to a release that I am very proud of. 

I would encourage you to take this release out for a spin and let us know what else you would like us to work on.

This afternoon at EclipseCon, Corey (my boss) announced that Teamprise has joined the Eclipse Foundation.  This is exciting news for us and goes well with our status as a Microsoft Visual Studio Industry Partner - demonstrating our commitment to both platforms.  If you want to see the official press release then head over to the Teamprise web site.  While Corey was at the show he also took the opportunity to give the first public outing of Teamprise 2.1 (which is due any day now) and hopefully show the Eclipse folks what Team Foundation Server can do for them. 

Fingers-crossed that his presentation went well - what the crowd won't have noticed is the fact that his main computer died on him late last week and he had to rapidly set up a different machine.  People who follow Eric's blog will know that we don't have a good track record with exhibition machines - I found this out for myself on a recent visit to Barcelona...

So in my previous post, I introduced the concept of a TFS workspace. If you only have one TFS workspace then you might have so far been blissfully unaware that you had one. This is because one is created for you automatically when you first use the Visual Studio Team Explorer UI – you’ll see it in a little drop down at the top of your pending changes window and at the top of your source control explorer view. By default, a workspace is created with the same name as your machine name (in my case, Vista-M70 for my lovely Dell Precision M70 running Vista).

Worspace selection drop down in Visual Studio

A little gotcha here is that these two drop downs are actually not connected. If you have multiple workspaces on your machine then in Visual Studio you have to change the drop down in both places if you want to see pending changes and source control view for the same workspace (which you usually do). Lucky users of Teamprise Explorer do not have to remember this – there is only the one drop down to switch for those folks ;-)

However, whether you knew it or not, if you’ve been using TFS version control, you are using workspaces. As previously discussed, a workspace contains the working folder mappings. Fair enough, but what the heck is a working folder mapping?

What is a working folder mapping?

A working folder mapping is a link between the local computer file system and the path to the file in the repository.

Working folder mapping illustration

In Team Foundation Server, the working folder mappings are stored in your TFS workspace. They are not shared between anyone else (unlike PVCS for example) and it is very easy to get a list of all your working folder mappings – in Visual Studio go to File, Source Control, Workspaces... Select your workspace and press Edit...

Edit working folder dialog in Visual Studio

As you can see, I have one working folder mapping here – a bit easier than tracking them all down in Visual Source Safe eh? A repository path in TFS always starts with “$/”, and the local folder is the path on your local file system. In the above example we map “$/demo” in TFS to “C:\code\demo” on my machine as an Active working folder mapping. We’ll talk about the other type of working folder mapping, a “Cloaked” working folder mapping, later in this post.

When you first do a “Get Latest” in source control explorer or the first time you clicked on the .sln file, you were prompted for a local folder to download the code into – this is because the TFS client creates a working folder mapping for you if you didn’t have one. Memory has it that this was actually behavior that was introduced later on on in the original TFS development cycle - I think up until Beta 3 of VSTS you had to manually add workspace mappings by going to the edit workspace dialog.  I certainly remember that I was introduced to the workspace concept early on in my involvement with TFS and once I had got over that learning hump, it helped me later on.

Users of the Teamprise TFS plug-in for Eclipse will note that when they run the Import wizard to bring projects into their Eclipse workspace they are actually not prompted for a local folder – that is because the way “Import” works in Eclipse is to bring that code into your local workspace folder – so the plug-in works out where Eclipse is going to place this folder for you and maps it accordingly.

The problem is that by making all the clients so easy to use, new people to TFS are often un-aware that the working folder mapping was created for them and so can get into trouble later on. The reason folks get into a bit of trouble with working folders in TFS v1 is there are a few restrictions to do with working folder mappings. The main one that confuses people is that there is a one-to-one mapping between local folders and repository paths.

This sounds obvious at first, two local paths cannot point to the same place in the repository for the same workspace. However, the one that catches a lot of folks un-aware is that you cannot have two repository paths mapped to one local path on the same computer.

If you think back to our discussion about the clever stuff TFS does with workspaces to keep them up to date, it deletes / moves files for you when they have been deleted / moved etc on the server. This is great behavior and a welcome relief from the VSS and CVS days. However think what would happen if you had two repository folders pointing to the same working folder and you had a file with the same name in both server paths...

Once you think about this it is obvious why the restriction exists – the only problem is that some folks used to use the fact that SourceSafe allowed two folders to point to one as part of their software management process. If you were one of these people and you would like to use TFS then you need to re-think your approach (consider branching techniques or build scripts that copy everything around to where is needs to be in some staging area)

Wow, this post is turning out to be a long one, but I promised you I would talk about the other, much less well known, working folder type of “Cloaked”.

Engage Cloaking Device

A cloaked working folder is a child an active working folder. Is tells the server that you do not want to download files under that directory. You do not want them to appear in your local folder.

Consider this scenario. You want to bring down the contents of an entire Team Project – possibly to develop on or perhaps to do a build. However, in one of (say) the 20 folders you have a folder that you do not want to download or receive updates to. Perhaps it contains lots of large word documents about an area of the system that you have no interest in. Perhaps it is a project that your particular solution does not need, but it needs most of the rest of them. In this case you can cloak the unwanted folder and next time you do a “Get Latest” it will be removed from your file system. Now you are able to do a “Get Latest” at the parent folder and receive updates for everything – apart from the folder you are not interested in. If it wasn’t for cloaked folders then the only alternative would have been to create active working folders for everything, but the one thing you didn’t want – which could be a time consuming and error prone process depending on your circumstances. Many users of TFS will never need to use a cloaked working folder mapping (I personally do not have to for the Teamprise source code) – however the ones that do are awfully glad they exist!

Right then. I feel this post has gone on long enough. If anyone has any other working folder mapping gotchas that they think others would benefit from feel free to add them to the comments of this post. In my next installment in this series I’ll be talking about how people get themselves into a mess with workspaces, how to avoid it and some tips on how to recover. I’m also planning one that explains how to use multiple workspaces on one machine to improve productivity for certain types of tasks and discuss some sensible workspace naming best practices. Again, if anyone has anything they would particularly like covered then let me know in the comments or drop me a mail.

Archives

Creative Commons License
This blog is licensed under a Creative Commons License.