Buck Hodges

Visual Studio Online, Team Foundation Server, MSDN

January, 2007

  • Buck Hodges

    Orcas Team Build Continuous Integration spec is now available


    Back in early December, I wrote the post, More on the Orcas features for Team Build, that described many of the new features that we are adding for Orcas, elaborating on what Brian Harry had written in his TFS Roadmap post.  I'm very happy to say that later in December, we finished the implementation of those features, and they'll be in the next CTP.

    A few days ago, we published the specification for Continuous Integration and the other features that we have added to Team Build.  It's available in Team Foundation Server section of the Feature Specifications for Visual Studio and .NET Framework "Orcas" page.  Here's the direct link: Continuous Integration.

    Before you think, "Wow, a spec, how dull," take a look at it.  It's fewer than 20 pages of Visio wireframes of the GUI.  There's no dense text to wade through.  Please check it out and post your comments, either here or on that site.  Unfortunately, the TFS Specification Feedback link takes you to a page where the two choices for feedback are Get Latest on Checkout and Annotate.  Hopefully, that'll be fixed next week.

    tags: , , , ,

  • Buck Hodges

    Remote Desktop Connection 6.0 client


    Last month, the Remote Desktop Connection 6.0 client was released.  It has some nice new features in it, which I've listed below.  Being able to log into a machine on a private network without having to use a VPN sounds really cool (TS Gateway servers), but I haven't been able to try that out.  I found an internal page where folks could sign up for access, but unfortunately the list was full.  Being able to span multiple monitors (mstsc /span) is really nice too.

    The change that I like the most right now, though, is a really simple one.  It now uses the same credentials dialog that you see in IE and elsewhere in Windows that lets you save and managed your credentials.  It's a small change, but I've found it really handy.

    Remote Desktop Connection 6.0 client

    Monitor spanning

    Remote Desktop Connection supports high-resolution displays that can be spanned across multiple monitors. However, the total resolution on all monitors must be under 4096 x 2048 pixels. The monitors must have the same resolution. Additionally, the monitors must be aligned side-by-side.

    To have the desktop of the remote computer span multiple monitors, type Mstsc /span at a command prompt.

    Visual improvements

    Remote Desktop Connection now supports 32-bit color and font smoothing.

    TS Gateway servers

    A TS Gateway server is a type of gateway that enables authorized users to connect to remote computers on a corporate network. These authorized users can connect from any computer by using an Internet connection. TS Gateway uses the Remote Desktop Protocol (RDP) together with the HTTPS protocol to help create a more secure, encrypted connection.

    However, earlier versions of Remote Desktop Connection cannot connect to remote computers across firewalls and network address translators. This behavior occurs because port 3389 is typically blocked to enhance network security. Port 3389 is the port that is used for Remote Desktop connections. However, a TS Gateway server uses port 443. Port 443 transmits data through a Secure Sockets Layer (SSL) tunnel.

    The advantages of a TS Gateway server are as follows:

    • It enables Remote Desktop connections to a corporate network from the Internet without setting up a virtual private network (VPN) connection.
    • It enables connections to remote computers across firewalls.
    • It helps you share a network connection with other programs that are running on the computer. This enables you to use the Internet service provider (ISP) connection instead of the corporate network to send and receive data over the remote connection.
    Network Level Authentication
    Network Level Authentication is a new authentication method that finishes user authentication before you establish a full Remote Desktop Connection and the logon screen appears.
    The advantages of Network Level Authentication are as follows:
    • It requires fewer remote computer resources at first because remote computer uses a limited number of resources before it authenticates the user. In earlier versions, the remote computer starts a full Remote Desktop Connection.
    • It can help provide better security by reducing the risk of denial of service attacks (a denial of service attack attempts to limit or prevent access to the Internet).
    • It uses remote computer authentication. This helps protect users from connecting to remote computers that are set up for malicious purposes.

    Server authentication

    In Remote Desktop Connection, server authentication verifies that you are connecting to the correct remote computer or server. This security measure helps prevent you from connecting to a different computer or server than you intend to connect to. This also prevents you from unintentionally exposing confidential information.

    Resource redirection

    The Remote Desktop Connection 6.0 client update helps you redirect Plug and Play devices that support redirection.

    Terminal Services Remote Programs

    Remote Programs are a feature of Windows Server Terminal Services that lets client computers connect to a remote computer and use programs that are installed on it. For example, a workplace may have a remote computer to which employees can connect and run Microsoft Word. An administrator must first publish the programs for end-users to access them. The experience is the same as running a program that is installed on the computer.

    tags: , , ,

  • Buck Hodges

    Tabbed windows for remote desktop connections


    Shortly after I wrote about Remote Desktop Connection 6.0 client, Blake Handler sent me email about a CodePlex project called Terminals.  Terminals is a neat application that hosts RDC sessions in tabs.

    One of the options in the Terminals connection dialog is whether to connect to the console, which becomes important when connecting to Windows 2003 Servers.  Unless I missed it, the RDC 6.0 GUI still doesn't have this feature, and you still have to use mstsc /console.

    Terminals was created by Dudu Shmaya and Eyal Post.  If Dudu's name sounds familiar, it's because he also wrote the TFSBuildManager that I recently wrote about.  I noticed it at the time and added to the list of things to check out, but Blake's email motivated me to go download and try it.  I like it!

    You can find screenshots of Terminals in Eyal's post, Windows Terminal Services Client.  Check it out!

    tags: , , ,

  • Buck Hodges

    John Robbins' approach to working offline with Team Foundation Server


    John Robbins has written a post called Working Offline with TFS.  In it, he describes his approach to using Visual Studio when not connected to the Team Foundation Server.  As many of you know, the server information is stored in the .sln file, and VS tries to connect to the server whenever you open a solution that contains the server information in its source control bindings.  To make things go more quickly, he wrote a couple of custom MSBuild tasks to automate the process of adding and removing the bindings the solution files.  While you don't have to remove the bindings while you're offline, it certainly makes opening the solution quicker when you know you can't get to the server.

    For synchronizing with the server when he's connected again, he wrote an MSBuild task that wraps tfpt to use the online command.  The online command will find and pend edits for any files in version control that are writable and don't already have a pending edit.  Optionally, it will find additions and deletions (and there more options still -- run tfpt online /help for more information).

    He pointed out a bug in tfpt.exe such that there's not way to get the online command's dialog when standard out is redirected, which was also a bug in tf.exe.  It's correct that the default is no GUI or other prompting when standard out is redirected, but we had intended to allow a way to get the GUI in that case.  I fixed the bug in tfpt.exe to add the /prompt switch.  We had already fixed the Orcas tf.exe a while back.  So, the problem with not getting the online command's dialog as he describes will be fixed when the updated tfpt.exe is released, so long as you add /prompt (I don't know when, but it's not too far off in the future).

    [UPDATE 01/11/07]  I've changed the last paragraph to clarify the bug I described.

    tags: , , , , ,

  • Buck Hodges

    IE Add-in for filing bugs in TFS for web pages


    Rob Caron wrote about the post Automatically raise bugs from IE on the Microsoft Developer Tools UK Sales Team blog.  Here's the text of the post, and there's a screen shot on the GotDotNet page.

    Have you ever been in a position where someone raises a bug on a web page that you have been working on, but doesn't supply enough information to allow you to reproduce the problem? Ok, I didn't think it was just me :-)

    To try and help this, I've written an addin for IE to allow users to easily raise a complete bug report. When the user indicates that there is a problem on the page, the addin will create a new Team System Work Item and populate it with the following information:

    • A screenshot attached to the work item.
    • HTML source of the page and any frames and IFrames attached to the work item.
    • Any style sheets referenced by the page attached to the work item
    • Any script files referenced by the page attached to the work item
    • Details about the user's machine and browser (OS version, browser version, screen size, ...)

    Hopefully this should include a significant amount of the information you'll need to identify the problem.

    For more information, some screenshots and the download, please have a look at the project space on gotdotnet.

    Looking at the screen shot, it looks really useful.  One enhancement that would be really nice would be a zip file attachment containing all of the files other than the screenshot.  Given how WIT attachments work in v1, it would be more convenient, especially for a large number of files.

    By the way, you can use the workitem command in tfpt, the Team Foundation Power Toy (soon to be Tool) command line, to download all of the attachments for a work item.

    tags: , ,

  • Buck Hodges

    Internal TFS server database maintenance


    Brian posted these answers in a comment to a question on his January dogfood statistics post.  These may be of interest to folks out there, particularly those running larger-sized Team Foundation Server installations.

    1) What is the current size of our dogfood database?

    • Version control: 928G
    • Workitem tracking: 121G
    • Warehouse: 17G
    • The rest is noise.

    2) Backups/Restores - With large databases, are there any issues with backups and/or restores?  How often do we run backups?  How long do they take typically?

    Full Databases backups (using LiteSpeed) – Every night

    Transactional Logs backups (using LiteSpeed) – Every 15 minutes

    For our biggest instance (DevDiv, total size a little bit over 1TB) – total full backup time for all databases is around 10-12 hours.

    3) Integrity Checks - Do we run periodic "integrity checks" on the database and if so, how long do they take?

    dbcc checkdb for all databases – every weekend (total time 3-5 hours for all databases)

    4) Index Regeneration - Do we run periodic "index regeneration" on the database and if so, how long does it take?

    Index defragmentation – every weekend (total time 2-3 hours for all databases)

    Full index rebuilds have gotten very long and can't be done online so we are looking at partitioning some of our largest tables to make that infrequent maintainence operation less disruptive.

    tags: , ,

  • Buck Hodges

    Extending the Windows Vista grace period to 120 days


    Jeff Atwood has written a post on how to extend the Vista grace period to 120 days.  It turns out that you can extend it three times for 30 days each, giving you up to 120 days when you count the original 30-day grace period.  It seems like a great way to try out Vista Ultimate to see if it's worth the extra money.

    Extending The Windows Vista Grace Period to 120 Days

    If you're on the fence about the impending release of Windows Vista, I recommend trying before you buy. Every Vista DVD includes the ability to install any edition of Vista without a product key. When you install without a product key, you get an automatic 30 day evaluation period.* This probably isn't news to anyone.

    What may be news to you, however, is that you can easily extend the 30-day Windows Vista grace period to 120 days. No hacks required. This is an official, supported operation directly from Microsoft.

    To extend the grace period another 30 days, simply start a command prompt as Administrator, and issue this command:

    slmgr -rearm

    Reboot for the change to take effect, and voila, you have 30 more days. You can only extend three times, so the total grace period for a Vista evaluation is 120 days. You do, however, need to be careful that you've installed the correct edition of Vista. At the end of that 120 day grace period, you'll have to pony up a license fee for the edition of Vista you've installed.


    tags: ,

  • Buck Hodges

    TFSBuildManager - project on CodePlex


    Lorenzo Barbieri wrote about a tool on CodePlex called TFSBuildManager.  I didn't know about this one.  It's a tool written by Dudu Shmaya.  The CodePlex project page has the following about the project.


    TFSBuildManager is a utility to manage Team Foundation build types in an environment other than Visual Studio.

    Main Features
    • Start, stop a build
    • Change build/s quality
    • Delete, backup build/s
    • Edit build type
    • Release 1 Production is now available

    Looking at the screenshots, it looks quite useful.  There is a download from the releases page.

    Dudu's blog has quite a few posts about using the Team Build web service.  Here are links to some of them.

    tags: , , , ,

  • Buck Hodges

    Five things about me


    Martin Woodward tagged me with that blogging game that's going around where you post five things that people don't generally know about you and then tag five more people.  Okay, I have to admit it seems kind of fun, so I'll do my part to keep it going.

    1. I wrote firmware for electricity meters at Elster Electricity (it was part of ABB when I joined in 1999) for four years prior to joining Microsoft.  C, 16-bit micros, some assembly required, and no hotfixes or Windows update -- quite a different software development environment.  I worked on the A3 and REX meters, if you are really curious.  I even have a few patents to prove it.  There's something cool about being able to directly control all of the hardware.  And blowing up devices using 50,000+ volt surges just doesn't happen here.
    2. I was a pall bearer in my grandmother's funeral a few years ago.  When we got to the cemetery, we carried the casket to the grave site.  When we were about 50 feet from the hearse, my leg hit the side of the casket, and I set off the alarm on my Tahoe.  That was embarrassing, and it wasn't like you could stop and turn it off.  It shut off after a little while, thankfully.  Later we all laughed about it, knowing my grandmother was doing the same.
    3. While I had a TI-99/4A and later a Commodore 128 back in the 80's, I hated BASIC and didn't learn a programming language until my sophomore year at North Carolina State University (Pascal was cool, until I learned C, X Window and Motif).  So you won't have to endure any stories about cool code that I wrote when I was 12.  And I still don't like Basic.
    4. I don't like Star Trek!
    5. In the summer of 2005, I was a mentor for an intern named Philip Kelley.  He wrote tfpt (Team Foundation Philip's Tool, we jokingly called it).  On his last day, he thought he'd be funny and gave me a mini University of North Carolina basketball.  Earlier that year, the University of Illinois lost to UNC in the NCAA Men's Basketball Championship (I went to grad school at UIUC).  I figured I'd paint it red or something when we beat them at basketball or football, since I'm an NCSU grad and UNC is our rival.  It still sits in my office, and I'm still waiting to beat them.  Scott Guthrie's basketball is much cooler.

    I'm tagging Jeff Beehler, Aaron HallbergMario RodriguezJeff Atwood, and Clark Sell.

  • Buck Hodges

    How to deal with the Y2K7 problem -- file versions and AssemblyInfoTask


    If you use the AssemblyInfoTask to stamp the version numbers for your assemblies that you build with MSBuild as part of your Team Build process, you may run into the "Y2K7" problem.  The version number is stored as a 16-bit (yes, 16 not 32) unsigned integer.  With the format YMMDD, January 1, 2007 becomes 70101, which is 70,101 and doesn't fit in a 16-bit integer.  Internally, the version numbering has been reset to have a smaller number for the year.  For the last part of 2006, builds were 1MMDD.  Starting with 1/1/07, they are 2MMDD.  Neil Enns discusses the issue in the MSBuild Team Blog in a post titled, Fixing invalid version number problems with the AssemblyInfoTask.  He provides more background in the follow up post, Why are build numbers limited to 65535?

    tags: , , , ,

  • Buck Hodges

    Incremental gets with Team Build and the list of files that changed


    After you learn five things about Aaron that you didn't know, he'll show you how to do an incremental get without necessarily doing an incremental build.

    Doing an Incremental Get in Team Build

    In Team Build v1.0, it is not possible, without some trickeration, to do an incremental get without also doing an incremental build.  (The process for doing both is documented here, and consists of setting the SkipClean property to true, the SkipInitializeWorkspace property to true, and the ForceGet property to false) 

    The short answer for why this is the case is that the CoreClean target wipes out the entire source code directory in order to delete the intermediate binaries...

    Next he shows you how to get a list of files that changed since the last build.

    Getting the Modified Files for a Team Build Build

    I've had several people inquire recently about how to figure out which files have changed since the previous Team Build build...  In V1 there is no straightforward way to do this, unfortunately, though we plan to remedy that in the next version of Team Build.  For now, here is one approach - the basic idea is to do a preview get prior to doing the actual get.  There are issues with this, of course - you might be interested in the list of changesets rather than the list of files, for example; additional modifications might be made to source control between the preview and the actual get; you might want to get one of these lists without having to do an incremental get; and so forth.  To a first approximation, however, this should do the trick.

    As Aaron states, we're working to make these and other things simpler to accomplish in Orcas.  These are the kinds of things you won't find on the product roadmap or in a bulleted list of product features, but they help make folks more productive.  We take the feedback from the build forum to heart and try to address as many of these things as possible.  Whenever you hit something that's not possible, painful, or just simply annoying, post it in the forum.  We'll do our best to either make the problem disappear or at least substantially improve it.

    tags: , , , ,

  • Buck Hodges

    "Way behind the combination of Nant/CruiseControl.Net"


    I was reading through some customer feedback about VSTS and TFS.  There were a lot of positive comments in there.  I was looking for the negatives, though, because I want to know where we're missing the mark (perhaps by miles).  This is one that really resonated with me.

    "The Build Machine aspect of Team Foundation Server is way behind the combination of Nant/CruiseControl.Net"

    It's my sincere hope that what we are doing with Team Foundation Build in Orcas will dramatically change that perception.  The following posts cover many of our new features.

    As a result, I'm looking forward to what folks have to say when the next CTP comes out (February/March).  The January CTP did not have any of the new Orcas TFS features.

    As always, please let us know what you need to make Team Build truly useful.  I'll warn you up front that the time for big features has passed for Orcas.  However, smaller features may be tackled via DCRs (design change requests) for Orcas, and now is a great time to put in suggestions for future releases.  By the way, waiting until a version ships before giving feedback on what you'd like to see in the next version is too late.  Major feature planning for the next version starts before the current version ships so that the organization is ready to start implementing it after wrapping up the current version (Orcas development started almost immediately after Whidbey shipped, with only MQ in between).

    Another possibility for smaller, client-side features is the TFS power tools.  The downside here is that these obviously don't ship with the product and do not get official support.  One possible power tool would be a tray notification applet that shows whether the last build was good or bad, much like the one that's popular with CruiseControl users (CCTray).  We didn't have the time to do it as part of the feature crew that developed Continuous Integration and the architectural enhancements.  Is the tray applet something that would be a good power tool?  Or does it need to be "in the box" and considered for a DCR?

    What problems do you need Team Build to solve for you to be successful?

    tags: , , , ,

  • Buck Hodges

    Using FinalBuilder with Team Foundation Build


    Via Richard Hundhausen, I learned that the folks at FinalBuilder posted an article on their web site about how to get FinalBuilder working with Team Build via FinalBuilder's custom MSBuild task.  If you use FinalBuilder, you may want to check that out.

    tags: , , , ,

  • Buck Hodges

    TeamCity support for Team Foundation Server


    As part of their "Early Access Program," the folks at JetBrains have posted a build of TeamCity that contains support for TFS version control.  They are looking for feedback, so give it a try and let 'em know what you think.

    TeamCity EAP (Latest)

    Current build: 3654 released Jan 30, 2007 | Download | Changes

    This version of TeamCity will contain many additional features comparing with TeamCity 1.2 as well as improvements of existing functionality.
    To name a few:

    • View file changes on the Web
    • Enhanced notification policies with more customization
    • Eclipse integration
    • ClearCase VCS support
    • Checkout on build agent
    • MS Team Foundation Server VCS support
    • Visual Studio add-on - remote run & delayed commit for MS TFS
    • Agent details information page with possibility to enable/disable agents by administrator
    • Dependent builds triggering
    • Dependent builds artifacts exchange
    • Better and uniform UI to configure Inspections runner and IPR runner on the web
    • Search for code duplicates on the server-side and view results in IDEA
    • Improved IntelliJ IDEA plugin
    • View code duplicates on the Web
    • Possibility to clone project
    • Customizable build log filtering
    • Improved Maven 2 support
    • Ant 1.7 support
    • JUnit 4 support

    tags: , , ,

  • Buck Hodges

    Beeps from bullets


    Way back near the beginning of development of TFS version control, which was called Hatteras back then, we sent email to the team manually when we checked in.  So I would typically write my checkin comment in Outlook, which was using Microsoft Word as the editor, and then paste it into the checkin dialog.  My comment was a bulleted list of the changes that I made.  I would start with an asterisk, and Word would convert it to a bullet.  Later, viewing the changeset details on the command line would produce beeps.  I knew that the Unicode bullet character was being converted to a BEL (0x07) character, but I didn't know how the conversion worked.

    Raymond Chen's recent post, How a bullet turns into a beep, provides the details on how the conversion happens, changing the Unicode bullet into a beep.

    tags: , ,

  • Buck Hodges

    TFS Version Control Server Team blog is alive


    Chandru, a developer on the TFS version control server, has written the first post on the Version Control Server Team blog.  I helped Craig Harry, development lead for TFS version control platform, set this blog up a while back, so I'm excited to see the first post.  Craig's team owns both the version control server and the client object model, which moved to his team in the re-org that occurred last spring.

    Orcas Workspace Mapping Improvements

    I thought I would give you an overview of the workspace mapping improvements which Brian Harry mentioned in his TFS roadmap post. Please do keep in mind that any of this might change / be removed before Orcas ships - so there are no guarantees.

    History: In DevDiv our branches are enormous ,  a developer typically maps only portions of the tree they need to work on. Upon analysis we determined an average workspace had 100+ mappings. To reduce the performance and maintenance overhead of a large number of mappings we are introducing the following features.

    1. Mappings under Cloaks
    2. One Level Mappings


    Hopefully, this is the first of many good posts to come!  If you have things you want to know about, leave a comment on their blog or contact them.

    tags: , ,

Page 1 of 1 (16 items)