Buck Hodges

Visual Studio ALM (VSALM, formerly VSTS) - Team Foundation Service/Server (TFS) - MSDN

  • Buck Hodges

    Join the TFS development team and help shape the industry

    Do you want to be a developer on the TFS team, solve challenging problems, and break new ground in ALM?  Then join the TFS development team in Redmond, WA.

    You’ll notice that we mention cloud computing with Azure below.  If you saw the PDC keynote demos this year, you saw some early work on getting TFS running on Azure.  If you missed it, go to the 2:09:50 mark of the “PDC10 keynotes with Steve Ballmer and Bob Muglia” recording on the PDC10 site to see Brian Harry demo TFS on Azure (Brian also wrote a blog post about TFS on Azure).  We’re working on great new features with some very exciting technology.

    Software Development Engineer (Redmond, WA)

    Did you know that 30% of all software projects are cancelled, nearly half come in over budget, 60% are considered failures by the organizations that initiated them, and nine out of ten come in late? Join us to help change the industry!

    Visual Studio Team Foundation Server is the industry leader in application lifecycle management (ALM) tools – helping software teams build better software faster. TFS provides project management, version control, build, and ALM analytics. We are building our services in the cloud using Windows and SQL Azure platforms and making TFS available 24x7 over the internet.

    We have an opening for a talented and highly motivated software developer with a passion for algorithms and client/server software. You will design and implement key features for TFS. The position will require you to have or gain extensive knowledge of one or more of these technologies: WPF, ASP.NET, Visual Studio Industry Partner (VSIP) API, Web Services, WinForms, C#, and the .NET Framework. We’re looking for a candidate who seeks big challenges as part of a strong team and can mix great collaboration skills with an ability to work independently and deliver well thought out solutions to tough problems.

    If you enjoy solving tough problems and being part of a great team that’s making software development better, join TFS!

    Key Responsibilities:

    • Design and implement highly scalable, high performance work item tracking features.
    • Deliver state-of-the-art solutions for work breakdown and management with focus on delivering exceptional user experience.
    • Participate in prioritization activities by identifying technical issues early and throughout the end-to-end software development lifecycle

    The ideal candidate would have the following qualifications:

    • 2 - 4 years of commercial software development experience
    • Exceptional problem solving skills
    • Strong coding and debugging skills
    • Excellent UI design skills
    • Good understanding of efficient data structures and algorithms
    • A proven track record of shipping quality software
    • Capable of working independently and within a team
    • Passion for engineering excellence, learning and advancement
    • Sound understanding of multi-tiered system architecture
    • Experience with Scrum or other agile methodologies is a big plus

    We also have openings for program managers and testers.

  • Buck Hodges

    Join the TFS development team and help shape the ALM industry

    See updated post.

  • Buck Hodges

    Help improve MSDN – give them your feedback


    Please take a moment to provide feedback to the documentation team on the changes they’ve made recently.  They want to know what you think.  Thanks!

    We need your input on how well our improvements to the MSDN Library content work for you. Allen Clark has reorganized the topic: "Extending Visual Studio Application Lifecycle Management" and would like to know if these updates make the topic more useful for you:

    "I've been working on streamlining some content in an effort to make it easier for you to get the information that you need. The first place I did this was in the Team Foundation SDK, in Extending Team Foundation and Extending Work Item Tracking. I'm looking at doing the same thing for Extending Visual Studio Application Lifecycle Management. Here's the topic in its streamlined form. I'd like to hear back from anyone who uses the APIs for VSALM and Team Foundation to learn whether this works well for you, compared to the previous version. Any other feedback on this topic is also welcome, of course. For example, I think that it's clear that this topic could use a more thorough discussion of the API set for ALM as a whole."

    To learn more, please click here.

  • Buck Hodges

    How to convert a branch back to a regular folder


    In an effort to remove a small amount of complexity from the UI, we have the command to convert a branch back to a folder appear only under the main menu and not in the right click menu.  The way to convert a branch back to a regular folder is to do the following.

    1. Bring up Source Control Explorer
    2. Select the branch to convert back to the folder
    3. On the main menu bar, click File -> Source Control -> Branching and Merging - > Convert to Folder

    Why would you want to do this?  The reason would be just to remove the branch from branch visualizations if you’ve decided you never want to see it again.  This does not change the branching relationship, so you can still merge to and from the branch as before (it just affects the visualization and the properties you see in Source Control Explorer).

    You can also do this if you need to remove a deleted branch from showing up in branch visualization.  If you find that a deleted branch is still showing up, you can turn on the option to see deleted items in Source Control Explorer and follow the instructions above.

    The full MSDN doc page on this is at http://msdn.microsoft.com/en-us/library/ms181425.aspx.

  • Buck Hodges

    How to figure out whether a change has made it to another branch


    [UPDATE 11/5/12] I wanted to add that when using either the hierarchy view or the track changeset view, you can use Ctrl-C when the window has focus to get an image of it copied to the clipboard rather than having to use a screenshot tool.

    One of the great features in TFS 2010 is the ability to track changesets across branches. A prime user scenario for this feature is determining whether a fix has made it to a particular branch. Here’s an example of how to do that.

    How to track a changeset number:

    1. Bring up Source Control Explorer in VS by double clicking the Source Control node in Team Explorer (or make sure SCE has focus)
    2. Press Ctrl-G to bring up the Go to Changeset dialog (or Edit -> Go To… from the main menu)
    3. Enter the changeset and click Track Changeset. For this example, I’ll use 1984519 on our internal server.
    4. Specify the branches you want displayed and click Visualize. In this case I’m interested in Main. Because the change originates in MQTools, it is required and automatically selected. I also specified MQALM to show a branch where the fix has not been merged. The screenshot on the left shows the hierarchy view, and clicking the Timeline Tracking toolbar button shows the timeline view.
    clip_image002 clip_image002[4]


    How to track a work item:

    If you have a work item that has a changeset link, it’s even simpler. Bring up the work item form, right click on the form, and choose Track Work Item.


    Technorati Tags: branch,tfs,tfs 2010

  • Buck Hodges

    How to use the MSBuild debugger in Visual Studio 2010


    Dan Moseley, dev lead for msbuild, wrote a debugger for msbuild while on leave(!) back during the 2010 cycle.  While it ultimately couldn’t be fully completed and tested to be an official feature, it is in the product with a switch to enable it (it’s off by default).  This was a conscious decision made by the VS team, and I think it was a great compromise.  It wasn’t something feasible as a power tool, and it’s too useful to have to wait for the next release.

    Dan has written a series of blog posts on how to use it.


    Technorati Tags:
  • Buck Hodges

    Reports to show you what’s happening with the TFS warehouse and cube


    Grant has posted a set of reports that help you understand what’s going on in the TFS warehouse and cube in Team Foundation Server 2010 so that you can deal with issues such as field collisions, which can be very tedious to handle since out of the box we don’t provide easy ways to figure it out.  His post includes an attached zip file that you can download and deploy to your TFS 2010 installation.

    Administrative Report Pack for Team Foundation Server 2010

    One of the key components of TFS is the Data Warehouse, which is made up of a relational database and an Analysis Services cube.  In general, people don’t have a problem with the performance or operation of our Data Warehouse.  However there were two classes of problems that you’re likely to run into as your servers grow larger:

    1. Processing Time – As the number of reportable fields increases, the number of dimensions that Analysis Services has to process also increases.  This increases the time it takes to process the cube and therefore the latency of the data is higher.
    2. Schema Conflicts – In the simple case, when there are two fields in different collections (e.g. Priority) with the same name but a different type (e.g. String vs. Integer) this results in a schema conflict.  That project collection is then blocked from processing warehouse updates and the data in the warehouse & cube becomes stale.

    These reports are useful to TFS administrators, operations/support teams, project administrators & end-users.  The reports in this pack display the following kinds of information:

    • Recent processing times
    • Current status (whether the cube is processing now and, if not, when it is scheduled to process next)
    • Schema conflicts
    • Most recent time that each adapter successfully ran


    Technorati Tags: ,
  • Buck Hodges

    Team Foundation 2010 SDK published


    Allen Clark has announced the publication of the first release of the TFS 2010 SDK.  This represents a significant improvement in the documentation for the TFS API, and he will be releasing updates to it on a recurring basis.  The first release is small (relative to the size of the TFS API), but it will grow.  Be sure to leave feedback for Allen on what you find most valuable.

    Technorati Tags: ,
  • Buck Hodges

    Understanding changes in reporting in TFS 2010


    Sunder Raman, a program manager for TFS, has written a series of posts on the changes to the warehouse and the cube for 2010.



    John Socha-Leialoha, a developer on TFS, wrote a series on upgrading your reports.

    If you are interested in writing your own warehouse adapter, you’ll find the sample adapter in the SDK to be very helpful.

    If you have any questions about these topics, please contact Sunder and John.


  • Buck Hodges

    Posts on using the new team project collection APIs


    Taylor Lafrinere, a developer on Team Foundation Server who wrote a significant part of the new core server infrastructure APIs, has written a series of posts explaining some of the different parts.  If you have other parts of the API that you are interested in, be sure to leave a comment on one of his posts.

    Here are a few of his posts to get you started.

    Technorati Tags: ,
  • Buck Hodges

    Use test categories rather than test lists (vsmdi files)


    Years ago, I posted an msbuild task to run tests without test lists for VSTS 2005.  That functionality made it into VSTS 2008.  Then Pierre Greborio added support for test categories.  That test category capability is now available in VS 2010.  Using test categories is now the preferred way of running groups of tests, and you no longer need to deal with tests lists (.vsmdi files), which are tedious to maintain and very difficult to merge.

    Here’s the documentation on MSDN to show you how to make use of test categories in the 2010 release.

    Defining Test Categories to Group Your Tests

    If you have created automated tests using Microsoft Visual Studio 2010, you can manage these tests by categorizing them with test categories. When you run these automated tests using Visual Studio, Team Foundation Build, or mstest.exe, you can use these test categories to easily select which tests you run. You add test categories as attributes to your test methods.

    Test categories provide more flexibility than the test lists functionality from earlier versions of Microsoft Visual Studio. You can use logical operators with test categories to run tests from multiple categories together or to limit the tests that you run to tests that belong to multiple categories. Also test categories are easy to add as you create your test methods and you do not have to maintain test lists after you have created your test methods. By using test categories, you do not have to check in and check out the <solution name>.vsmdi file that maintains the test lists.


    Technorati Tags: ,
  • Buck Hodges

    TFS 2010 version control upgrade bug in handling labels, merges


    UPDATE [6/12/2010]  The patch is now available on MSDN Code Gallery here.  You must install it after you complete the MSI setup portion (the files need to be on the machine and registered in Windows first) and before the upgrade wizard (it’s the upgrade process, not setup that needs to be patched).

    1. Run the TFS 2010 installation and quit/cancel once you get to the upgrade wizard (do not upgrade).
    2. Install the patch.
    3. Go to Start –> All Programs –> Microsoft Team Foundation Server 2010 –> Team Foundation Administration Console and then launch the upgrade wizard again.
    4. Go through the upgrade process as usual.


    We discovered a couple of bugs in version control when upgrading to TFS 2010.  They affect labels and future merges, and whether or not you are affected depends on what renames you have done on files in labels and branches.  We are currently testing a fix that we expect to release shortly.  The fix, when released, must be installed before upgrading to TFS 2010.

    The issues are described in a KB article, which Matt published today.  Here are the symptoms that manifest after an upgrade without the fix.

    • Labels that were created before the upgrade are entirely empty.  Labels could be also have incorrect contents.
    • The merge wizard in Visual Studio does not display all valid merge targets for a given source path/branch.
    • During merging, merge candidates are shown for changes that were already merged prior to the upgrade.

    If you’ve already upgraded to 2010 from a previous release, you’ll need to decide whether there are labels that are critical for you.  If there are, fixing the label problem after an upgrade without the fix will likely require access to the original version control database prior to the upgrade.  You’ll need to contact customer support to get help with fixing the affected labels (customer support will not charge for incidents related to this upgrade bug).

    The merge issue is simpler to recover from, and it’s largely an annoyance.  You can read the KB article to understand what must happen.  The fix for the issue of merge targets not showing up in the merge wizard is to do a non-recursive baseless merge of the source to the target via the command line (e.g., tf merge /baseless dirA dirB).  Then the target will show.  The children will end up being baselessly merged, which will be annoying and tedious, but you will be able to recover and move forward.

    The underlying cause of both problems is the handling of renames during the upgrade, as described by the KB article.  In TFS 2010, we changed the schema of version control to change something called an item ID to effectively become a path ID. In both 2005 and 2008, every item added or branched in version control got a unique item ID forever.  So no matter what name or path changed to, the item ID never changed.  This allowed for completely tracking renames forever, no matter how complex.  However, it came at the price of introducing the confusing concept of a deletion ID, since a path could have more than one item at a time if there were at least one deleted item, and the concept of a namespace conflict, which occurs when two different non-deleted items (each has a different item ID in 2005/2008) tried to occupy the same path at the same time.  If you’ve ever had to resolve namespace conflicts in 2005 or 2008, particularly as a result of a merge, you know the pain I’m talking about. It also resulted in significant complication of the SQL, resulting in lower performance and scalability than otherwise would have been possible.

    So, we changed the schema such that a path uniquely identifies an item, turning the item ID into a path ID.  Matt talks about some of the implications of that in his post, Changing to Slot Mode in TFS 2010 Version Control.  Having used the server with the schema change for more than a year now internally, the change produced a faster, more scalable version control server, and the elimination of things like namespace conflicts has made merging less painful.

  • Buck Hodges

    Customizing Team Foundation Server Project Portals


    Phil Hodgson, a developers on TFS, published a new whitepaper that explains how to customize and get the most out of your dashboards in TFS 2010.  Check it out!

    Customizing Team Foundation Server Project Portals

    Phil Hodgson, Microsoft Corporation

    May 2010

    This article describes important concepts about project portals for Microsoft® Visual Studio® Team Foundation Server 2010 and provides guidance for process authors who customize process templates used to create project portals for team projects.

    Team Foundation Server supports project portals that are matched to the out-of-the-box process templates. Process templates are designed to be customized to a team’s or organization’s specific needs. Similarly Team Foundation Server project portals can be customized to provision custom content or features to the portal site. Examples of customizations that may be considered are:

    • Changing the dashboards provisioned including adding new dashboards

    • Adding new Excel workbooks

    • Changing the Web Parts (or Web Part properties) on standard dashboards

    • Changing the visual appearance of the portal site

    • Activating custom SharePoint Features

    Technorati Tags: ,
  • Buck Hodges

    TFS 2010 Power Tools are now available!


    Here is the first full release of Power Tools for TFS 2010!  Previously we had released versions for beta 2 and RC.  With this release the focus was to have parity with the 2008 power tools and fix bugs.  We’ll be adding new power tools in the next release (no date yet).

    TFS Build Extension Power Tool  is an exciting new addition to our power tools line up.  The Build Extensions provide the ability to execute Ant or Maven 2 builds from Team Foundation Server and publish the results of the build along with any associated JUnit test results back to Team Foundation Server.  This release is compatible with Team Foundation Server 2005, Team Foundation Server 2008 and Team Foundation Server 2010.

  • Buck Hodges

    How to see the TFS server calls made by the client


    Back in 2006 I wrote a post about a performance dialog that lets you see all of the calls made by the client.  It works with Visual Studio (devenv.exe), TFS command line (tf.exe), TCM command line (tcm.exe), Test Manager (mtm.exe), etc.

    It’s still in the product in 2010, and it’s as useful as ever if you are writing code that talks to TFS, and you want to optimize for performance.  It’s easy for extra calls to creep in, and this is a really easy way to keep track of it.  Also, if you find that something seems slow in VS when working with TFS, it provides a way for you to see whether it is calling the server and long it took. 

    Turning it on is easy.  All you need to do is to add the following lines to the bottom of your application’s .exe.config file, just inside the closing </configuration> element.  Note that the version number below is for an app using the 2010 TFS client object model.  2008 requires, and 2005 requires

        <add name="TeamFoundationSoapProxy" value="4" />
      <trace autoflush="true" indentsize="3">
          <add name="perfListener" type="Microsoft.TeamFoundation.Client.PerfTraceListener,Microsoft.TeamFoundation.Client, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

    When I edited my devenv.exe.config file to add this, I had to run Notepad (or VS) as an Administrator in order to change the file (I’m using Windows 2008 Server R2, and I expect Windows 7 requires the same).

    Here’s an updated screen shot showing calls made by Visual Studio 2010 in connecting to a team project on a 2010 server.


    If you hover over one of the lines in the bottom panel, you’ll get the stack trace for the call.


    If you select rows from the grid, you can paste them into another document, such as a spreadsheet.  Here I selected all of the rows in the top panel and pasted the results.

      WebService TotalTime Last Count Average Min Time Max Time
      QueryNodes[Administration] 3711 1545 6 618 190 1545
      ListChildren[ReportServer] 3610 3610 1 3610 3610 3610
      GetMetadataEx2[WorkItemTracking] 2256 1926 2 1128 330 1926
      ReadIdentities[Services] 1155 767 2 577 388 767
      Connect[Services] 777 777 1 777 777 777
      QueryItems[VersionControl] 710 187 2 355 187 523
      QuerySecurityNamespaces[Services] 632 632 1 632 632 632
      GetRegistrationEntries[Services] 605 605 1 605 605 605
      GetListCollection[SharePoint] 534 534 1 534 534 534
      QueryPendingSets[VersionControl] 498 498 1 498 498 498
      QueryWorkspaces[VersionControl] 470 470 1 470 470 470
      QueryBuildDefinitions[Build] 442 442 1 442 442 442
      GetStoredQueryItems[WorkItemTracking] 353 353 1 353 353 353
      QueryCheckinNoteDefinition[VersionControl] 294 294 1 294 294 294
      GetProperties[Administration] 292 292 1 292 292 292
      QueryResourceTypes[Administration] 231 231 1 231 231 231
      QueryResources[Administration] 213 213 1 213 213 213
      QueryPermissions[Services] 198 198 1 198 198 198
      Connect[Administration] 181 181 1 181 181 181


  • Buck Hodges

    TFS 2010 has shipped!


    Monday was the official launch for the TFS and VS 2010 releases!  I highly recommend upgrading from TFS 2005 or TFS 2008 to TFS 2010.  The number of new features in TFS 2010 is very long, and there are lots of posts on them.  One of the most exciting is that you can install TFS on a client OS (e.g., Windows 7) using SQL Express 2008.  Brian Harry runs TFS and VS 2010 on his Win7 netbook that has 2GB of RAM.

    For those of you using VS 2005 and VS 2008 to connect to TFS 2010 servers, you’ll need to install the appropriate patch for compatibility.  We had to make some changes to the behavior of the server for the new features that affects the older clients, and we didn’t want to leave the old clients in a bad state.  These are the final versions of the patches.

    2008: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d

    2005: http://blogs.msdn.com/team_foundation/pages/the-visual-studio-2005-forward-compatibility-update-is-available.aspx


  • Buck Hodges

    Visual Studio 2010 Licensing Whitepaper is now available


    I’ve posted before about TFS licensing, and the official whitepaper was finally released last week.  The document covers Team Foundation Server as well as all of Visual Studio.

    Visual Studio 2010 Licensing Whitepaper

  • Buck Hodges

    Fix for Message Size Issue in Outlook 2010 Beta


    If you are using Outlook 2010 Beta, you probably need this fix because all of your emails are huge.  It was killing me (and a bunch of other folks internally).  It is fixed in the recent RC, but most people don’t have access (it’s not a public RC).  The Office team has just posted a fix for this issue for folks using the Beta.

    Fix for Message Size Issue in Outlook 2010 Beta

    Recently, we posted information on the Outlook blog about a bug in the Microsoft Office 2010 Beta that increases the message size of some e-mails messages sent from the Microsoft Outlook 2010 Beta. The Office team has been hard at work building a fix for this issue, which is available immediately.

    Download Outlook 2010 Beta fix for 32-bit Office 2010

    Download Outlook 2010 Beta fix for 64-bit Office 2010

    This fix prevents future messages from consuming unnecessary space, but doesn’t resize existing messages. If you reply or forward an existing message that is affected by this bug, it remains enlarged. To help reduce the impact of large messages on your Inbox and mailbox storage quota, you can also run Conversation Cleanup (new feature in Outlook 2010) on large folders. On the Home tab, in the Delete group, click Clean Up. Also, consider starting new message conversations or threads when possible.

    I thought I’d pass it along.

    Technorati Tags: ,
  • Buck Hodges

    TFS client API changes from Beta 2 to RC


    While I don’t have a comprehensive list, I do want to point out these four changes in particular because these classes are fundamental to the API.  If you have written code with the Beta 2 client API, here are the changes you will need to be aware of to use the RC client API.

    • TeamFoundationServerBase is now TfsConnection.
    • TeamFoundationApplicationInstance is now TfsConfigurationServer.
    • TfsTeamProjectCollection replaces TeamFoundationServer.
    • TeamFoundationServer is now obsolete.  It still works, but there are limitations with using it because it is not aware of collections.

    [UPDATE 2/12/10]  Jim Lamb has posted updated TFS SDK docs: http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=TfsSdk&DownloadId=9107.

    Technorati Tags: ,
  • Buck Hodges

    Uninstall TFS Power Tools for 2010 Beta 2 before installing VS 2010 RC


    Several folks have run into a problem after uninstalling VS 2010 Beta 2 and installing VS 2010 RC.  When VS 2010 runs, you get an error message like the following.

    Team Foundation Error

    Could not load type

    ‘Microsoft.TeamFoundation.Client.TeamFoundationServerBase’ from assembly ‘Microsoft.TeamFoundationClient, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’.

    The problem is that the TFS Power Tools for 2010 Beta 2 are installed.  Between Beta 2 and RC we made changes to the 2010 client API, so the Beta 2 power tools release will not work.  We do not currently have a release of the power tools for the RC (we are working on a power tools release for 2010 RTM).

    The fix here is to uinstall the TFS Power Tools for 2010 Beta 2.  If after uninstalling it you still get the message, some folks have reported that in order to get rid of it they had to install the power tools again and then uninstall it.

  • Buck Hodges

    Deep dive on Windows Workflow 4.0 activities


    Patrick Carnahan is a developer on TFS Build, and he’s written a series of detailed posts on how to write custom activities in Windows Workflow 4.0 (WF), which is now used to orchestrate the build process for TFS Build in 2010.  It’s a deep dive on WF activities.  Jim Lamb’s post on how to integrate custom workflow activities into TFS Build is a great companion to this series.

    Introduction to Windows Workflow 4.0

    In order to help everyone get up to speed with build customization, I wanted to take a few posts to share our collective knowledge on the Workflow framework in .NET 4.0. In this first post I plan to tackle the different base classes that may be used when designing your own custom activities, along with typical usage scenarios. Other topics, such as extensions, tracking, and more advanced customization will be covered later. I will also be keeping an eye on comments to help point me in the right direction. So without further adieu, on with the code!

    Windows Workflow 4.0 - CopyFile

    It has recently come to my attention that there is unrest regarding our inclusion of a CopyDirectory activity without a CopyFile activity. Therefore, I decided to take this opportunity to introduce everyone to the sub-class AsyncCodeActivity and how you can utilize it with a real world example – a cancelable file copy operation. As you may recall from my previous workflow posts, CodeActivity does provide a mechanism for cancelation while the AsyncCodeActivity does facilitate this need. If you are not familiar with asynchronous programming in .NET then you should probably read the following article to brush up before continuing.

    Windows Workflow 4.0 – CopyDirectory (Part 1 of 3)

    In my last couple of posts I have lead you through some basic introduction to workflow as well as a real world example of how to implement a cancelable CopyFile activity. The next thing I would like to do is dive into a much more involved example utilizing the previous activity. The purpose of this post is to introduce the class NativeActivity, since we will need to implement a custom activity for driving the consumers. We will also be working toward using our producer-consumer activity to eventually develop a parallelizable CopyDirectory activity, which I plan to cover in a subsequent posts.

    Windows Workflow 4.0 – CopyDirectory (Part 2 of 3)

    In my previous post I introduced you to NativeActivity and walked through the design and implementation of a class named ParallelItemScheduler<T>. In part 2 of this series we will be utilizing the aforementioned activity to build a new composed activity named ProducerConsumer<T>. Once we have completed this task we will have a framework for building our final activity, CopyDirectory.

    Windows Workflow 4.0 – CopyDirectory (Part 3 of 3)

    So far we have written ParallelItemScheduler<T>, which is a generic activity that goes dormant and schedules actions based on input via bookmark resumption. We then used this activity to design ProducerConsumer<T>, which takes this idea a little further and provides a generic mechanism for running a producer thread that can pump data into a consumer thread. In the last part of this series we finally have all required building blocks to design our highly efficient and parallel copy directory activity!

    Windows Workflow 4.0 – Workflow Instance Extensions

    In the previous posts we covered one way you could implement a producer-consumer pattern in workflow. This approach used composition and attempted to hide the complexities of the underlying operations inside of the respective activities through composition. However, one scenario in particular this model does not allow you to implement involves modeling of existing .NET events in a workflow. For instance, if we want to implement a FileSystemWatcher activity we need to provide some way for consumers to hook into the events exposed by the .NET object. The only way to accomplish our goal is to hook up to the .NET events and schedule workflow actions from our event handler – but how would this be implemented? Let’s take a look at some more pieces of the workflow framework that will allow us to accomplish this goal.

    Be sure to post comments on Patrick’s blog on what else you’d like him to cover.


  • Buck Hodges

    Does your display not turn off automatically? You may need an update for your wireless mouse.


    On my shiny new Windows Server 2008 R2 installation, my monitors won’t go into low power mode even though they should turn off after 10 minutes of inactivity based on my display settings in Windows.  Chris Rathjen suggested to me that it could be the wireless mouse (Microsoft Natural Wireless Laser Mouse 6000 in my case – what a mouthful) keeping it awake.  I unplugged it from the USB port, and sure enough, my monitors went into low power mode.

    So, I thought I’d try installing the current IntelliPoint drivers for Windows 7 64-bit to see if that fixed the problem.  It did indeed do the trick.  You can download it from http://www.microsoft.com/hardware/downloads/default.mspx if you are having a similar issue with a Microsoft wireless mouse.

  • Buck Hodges

    Free of XP and Vista! All Win7, all the time.


    I took a couple of weeks off over the holidays (a ton of people did – there weren’t many folks around last week), and I finally took the time to migrate our two desktops at home from XP to Win7.  I’ve been running Win7 for many months on my work laptop, my personal laptop, and most recently a Dell Mini 9 (okay, I consider four months ago recently – heck, my blogging frequency is terrible now).

    My regular laptop at home is an old Thinkpad T40 that’s about five years old at this point.  It has 1.5 GB of RAM (not that you need that much for 7 – 1 GB works fine for surfing, email, and that sort of thing), but it’s clearly a weak machine by current standards.  Win7 runs just fine on it.

    Similarly, my old desktop was over five years old.  Since it has 1 GB of RAM, it runs Win7 very nicely, and that one’s now my wife’s machine.  Meanwhile, I finally bought myself a new desktop (Core i7 HP Pavillion Elite) back in November, and vacation afforded me the time to get all my stuff migrated over to it (after wiping the machine, of course – too much crud comes on new machines).

    To finish moving to Win7, I needed to upgrade my development desktop at work from Windows Server 2008 to Windows Server 2008 R2 (aka Win7 server).  I hadn't found the time to do it, but the video driver crashed again on Tuesday.  I was tired of that happening periodically.  So I made use of the Windows Deployment Service we have here in the local office, and kicked off a Win2k8 R2 installation as I left.

    I spend so much of my day in Outlook these days that the first app I installed was Office (2010 Beta, of course, which works very well!).  I’ve been so busy that I haven’t even installed Visual Studio yet.  I had been running VS 2010 Beta 2, and that’s what I’m also running on my laptop.  I’m hoping to pick up a new signed build tomorrow, and put the latest and greatest on my dev box.

    After redoing my dev box, XP and Vista (in the form of Windows Server 2008) are out of my life.  It’s hard to believe XP has dominated for basically a decade.  All of my installations of Win7 have been great, and I’ve only hit the one snag with a Bluetooth mouse I described in my post on the Dell Mini 9 (a reader commented not having the issue with the same combination, so maybe I did something dumb).  I really love how it finds all of the drivers for video cards, network adapters, smart card readers, and printers.  Win7 is awesome!

    Happy New Year!

  • Buck Hodges

    Building .NET 4.0 Apps with Team Foundation Build 2008


    William Bartholomew, former VSTS MVP and author of the book Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build, recently joined Microsoft.  He's written a great post on the handful of steps you need to follow if you want to build .NET 4.0 applications with TFS 2008:  Building .NET 4.0 Applications Using Team Build 2008.  Check it out!

  • Buck Hodges

    What features are in TFS Basic 2010?


    Earlier, I wrote a post explaining where to find TFS Basic.  Someone asked a set of questions about TFS Basic, and I thought I’d post the answers here.

    What features are in TFS Basic 2010?

    Brian’s post describes a bit of the feature differences and also shows the installation process. It’s really much easier to talk about features not in Basic, as Basic is just TFS configured using a set of defaults to make the installation experience very simple. Basic does not configure SharePoint or SQL Reporting Services (RS), and because of the lack of RS there’s no warehouse. That’s it. Otherwise, it’s the same feature set as standard TFS. If you decide at some point later that you want to use those features, you can choose to configure them via the Team Foundation Administration Console (note that to use SQL Reporting Services, you must use full SQL Server and not Express).

    You get additional features in TFS Basic of being able to use SQL Server Express 2008 rather than regular SQL Server 2008, though you are free to point Basic at an existing SQL server (default is to install SQL Server Express or reuse it if it is already installed), and you get the feature of being able to install on a client OS (Win7 or Vista).

    Is TFS Basic limited to 5 users?  How can I add more?

    No, TFS Basic is not limited to 5 users. You can have as many users as you like, so long as users 6 through N have TFS CALs, which are either purchased or ones included due to the user having an MSDN subscription. See my post with licensing comments from Doug Seven for more info. If you want to have more than 5 users, you may want to put TFS Basic on a Windows Server OS because the client OSes are limited to about 10 simultaneous connections, after which point connections are either queued (some buffer) or refused.

    Is the new Excel reporting feature available (right click on a work item query and choose to create a report in Excel)?

    You will not be able to use the Excel reports feature built into the product for TFS Basic since there is no warehouse.

    Is web access available in TFS Basic?

    TFS Basic does indeed include web access. There’s unfortunately no shortcut to get to web access via the right click menu in Team Explorer, which has been suggested. You can always find web access at http://yourserver:8080/tfs/web.

Page 4 of 23 (560 items) «23456»