Welcome to MSDN Blogs Sign in | Join | Help

It's been a while since I last posted. I've been very busy with my new responsibilities on the Admin, Ops and Deployment team. Since joining the team, we've been working on revamping our installer codebase and getting geared up for our current work in Orcas. So, what have I been up to? Well, let's just say it's all about databases! :-)

As I'm sure most any developer who has shipped a database-based product can tell you, handling database installation, upgrade and maintenance can quickly become an unmanagable nightmare. If you're only talking about one production database, that's not too bad. But what if you effectively have thousands of production systems? Now, mutliply that by the number of developers that make changes to your database code, and you'll find yourself beginning to ask these questions:

  • How to we track changes to our database schemas in a manner that allows us to upgrade any number of previous versions to the latest code?
  • What happens if we're not the only ones using the database? We can't just drop everything and recreate it. That's not very friendly.
  • How do we enforce some common rules that should be applied to all developers writing SQL code?
  • How do we stored version stamps in the database?
  • How do we know what's been executed against a given target system?
  • What if the upgrade fails? Can we recover?
  • And the list goes on...

These are the kinds of questions that I've been working on for TFS. My hope is that we'll have an improved database maintence story in Orcas and beyond. Of course, if everything goes well, you'll never notice the new database installer. It'll just work. :-)

Cheers!

I've recently added a new command to the TFPT powertoy. The new bind command converts the VSS source control bindings in your solutions into TFS source control bindings. So, after converting your VSS database using the VSSConverter.exe, you can use the TFPT powertoy to convert your bindings. Once the next version of TFPT is released, I will blog about this cool feature in more detail.
I just saw an awesome presentation about the dynamic method invocation capabilities of .NET 2.0. In particular, the new dynamic method delegate feature looks cool! If you have ever considered using generated IL to gain a performance edge in dynamic method calls, you really need to watch this video.

If you were using Team Foundation prior to Beta 3, you most likely have solutions that were bound to Team Foundation using source control intergration. Although we don't support 'upgrading' from Beta 2 to Beta 3, you could have manually copied your data from a previous database into the new new one by means of checking in your old files to the new server. If that's the case, then you will encounter problems when trying to open you solutions using Visual Studio 2005 RC1 w/ Team Foundation Beta 3. These issue arise from the fact that we made significant changes to how we handle source control integration for Team Foundation. However, all is not lost! There are a couple of ways that you can recover your source control bindings without too much headache.

The first option is the easiest. Upon opening your solution, you should receive a message box asking how you would like to work with the solution. This message is stating that Visual Studio could not load the source control plug-in for your solution and we must either work temporary disconnected -or- remove the source control bindings altogether. For this first scenario, you can select to remove the source control bindings. After the solution has successfully opened, you can then select File > Source Control > Change Source Control... This will bring up the Change Source Control dialog which will allow you to bind the solution to your new Team Foundation server.

The second option involves editing the solution file manually before you attempt to open it using Visual Studio. Within the solution file (*.sln), you will find a section which looks like this:

GlobalSection(SourceCodeControl) = preSolution
  SccNumberOfProjects = 4
  SccEnterpriseProvider = {DE9DF59E-8859-48A8-AA95-1E984B3B48A9}
  SccTeamFoundationServer =
http://vstsb2:8080/
  SccLocalPath0 = .
  SccWebProject1 = true
  SccProjectUniqueName1 =
http://localhost:2005/adventureworks
  SccProjectName1 = adventureworks
  SccLocalPath1 = adventureworks
  SccProjectEnlistmentChoice1 = 2
  SccProjectUniqueName2 = Notification\\Notification.csproj
  SccProjectName2 = Notification
  SccLocalPath2 = Notification
  SccProjectUniqueName3 = TestProject\\TestProject.csproj
  SccProjectName3 = TestProject
  SccLocalPath3 = TestProject
 EndGlobalSection

The trick to fixing the problem is in changing the values in RED. The GlobalSection name has been changed from SourceCodeControl to TeamFoundationVersionControl, and the SccEnterpriseProvider GUID has been changed from {DE9DF59E-8859-48A8-AA95-1E984B3B48A9} to {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}. So, after editing the file, this section now looks like this:

GlobalSection(TeamFoundationVersionControl) = preSolution
  SccNumberOfProjects = 4
  SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
  SccTeamFoundationServer = http://vstsb2:8080/

  SccLocalPath0 = .
  SccWebProject1 = true
  SccProjectUniqueName1 =
http://localhost:2005/adventureworks
  SccProjectName1 = adventureworks
  SccLocalPath1 = adventureworks
  SccProjectEnlistmentChoice1 = 2
  SccProjectUniqueName2 = Notification\\Notification.csproj
  SccProjectName2 = Notification
  SccLocalPath2 = Notification
  SccProjectUniqueName3 = TestProject\\TestProject.csproj
  SccProjectName3 = TestProject
  SccLocalPath3 = TestProject
 EndGlobalSection

One last thing. You should also delete any *.suo files what you have associated with the solution. This file contains user cached settings and can be safely deleted.

Hope this helps you in getting up and running with Team Foundation Beta 3. Let me know if you have any problems with this solution.

Buck Hodges has a great blog entry about this major milestone accomplishment. I encourage you to download the beta and start using Team Foundation!

I think the title says it all!!!

Arrrrgggghhhh!!!   :-(

I'd like the hear what you feel the pros and cons of using SCC integration in Visual Studio are.

Do you use it? If not, why?

In case you didn't know, the Hatteras team is dogfooding Team System. This means that we are using the code that we develop. Over the past few weeks, I have been doing work that required me to constantly undo my changes and re-apply some shelved changes from the server. All I have to say is "Shelvesets Rock!". It's a great feature for managing changes and allowing a developer to temporary put aside code, in order to switch gears.

If you haven't tried using Shelvesets, I recommend you give them a test drive. Let me know you opinions on this cool feature.

This is my first blog as a Microsoft employee. In fact, I am posting this at the end of my first week as an SDE on the Hatteras client team. Oh, what a week it's been! Having worked outside the ranks of Microsoft for many years, it's really interesting to see how the internals of the machine work. I have yet to be disappointed!

Over the course of time, I plan to use this blog as a way of communicating the different aspects of the new source code control in Team System. Right now, I'm not sure what can be said and what can't, so I won't put any details in this blog entry. But I promise, I will share what I can, when I can.

Over the past few years, I have come to love reading blog entries about technology. In this blog, I want to contribute back to the community. It only seems right, since I have learned so much from simply reading blogs!

So, who am I? Well, I'm obviously an SDE within Microsoft. I've been developing code since I was 10 years old. Most recently, I've become a diehard C# fan. I've worked on all kinds of projects, ranging from financial portfolio management software to professional hockey team websites. My passion lies in software design and architecture. I married the most intelligent person I know, my wife, Christine, and we have a bouncing baby boy (oh yeah, a dog and a cat too).

I look forward to providing more interesting blogs in the months to come.

 
Page view tracker