Buck Hodges

Visual Studio Online, Team Foundation Server, MSDN

  • Buck Hodges

    Eliminate ctl00oReportCell error and simplifying team project creation authorization


    Mike Attili has a posted a couple of useful things for using the Team Foundation beta.

    If you are tired of getting the "Unable to locate control: ctl00oReportCell" message, check out his solution to elminating the problem in Eliminate ctl00oReportCell error in Team System Project Portal.

    He also provides a guide for setting up a group and assigning the permissions in TFS, Rosetta, and SharePoint to allow users in that group to successfully create Team Projects.  See Simplify Authorization for Team Project Creation.

  • Buck Hodges

    How to fix a problem with Windows backup and the Volume Shadow Service after installing Yukon April CTP


    In the Team Foundation forum, a user posted the following problem with Windows backup after installing Team Foundation Server, including the April CTP of SQL 2005.

    Prior to installing Team Foundation Server and Client I was able to use the Windows backup utility to successfully create an ASR backup and full backup of the server.

    After installinf TFS I find the backup utility fails with the following error:

    Error returned while the creating volume shadow copy: 80042301

    After looking further into this, it appears that the volume shadow copy service was not started, nor could it be manually started. All other means to start the service failed. It seems to be stopping the backup utility from working.

    The answer was posted yesterday.

    There is a bug in SQL Server 2005 setup that causes incorrect value to be inserted in the following registry key.

    The workaround to fixing this problem is to delete the VssAccessControl key.
    Then you should be able to start the VSS service.

    This issue has been fixed in the May CTP of SQL Server 2005 and this workaround would not be needed for new installations of SQL Server 2005 May CTP (or later) as they do not create this registry key.

    Note: Once you have this problem, you'll have to manually delete the key. Upgrade to a newer version of SQL Server or uninstall/install would not remove this registry key automatically and the problem will persist.

  • Buck Hodges

    Microsoft to expand small Durham office


    The News & Observer wrote an article about Brian, Craig, and our office.

    Microsoft to expand small Durham office

    DURHAM -- Brian Harry jokes that he called Microsoft the evil empire before it was popular to do so.

    "I only ever worked for start-ups, and in those days, I viewed it as a behemoth," said Harry, 38.

    Now he runs a development office in Durham for the world's largest software company. It is an office that has operated in relative obscurity since it began almost three years ago, and one that is now poised for big expansion.

    If you are curious about the office, here are the stats in brief.

    WHERE: Durham

    WHAT IT DOES: Employees build pieces of Microsoft's Visual Studio product. It is used by developers to create programs that operate on Windows.


    FUTURE PLANS: To hire about 60 people during the next year as it expands locally. It's hiring for many roles, including developers and testers.

    TO APPLY: Send resumes to vsncrec@microsoft.com.

  • Buck Hodges

    Add an RSS feed to Team Foundation Source Control


    Jeff Lucovsky posted a nice two-part series on setting up an RSS feed for your Team Foundation source control server.  Check it out.

    Team Foundation RSS Feed Generator for Source Control
    Part 2: What's my source control server doing? A RSS feed to keep track of checkins

  • Buck Hodges

    VSTS 2005 FAQ blog posts fixes for known issues

    The Visual Studio 2005 Team System blog functions as sort of a FAQ in blog form.  They've started posting known issues and workarounds for the new beta release.  The first two posts are about the problems antivirus software can cause during setup and what to do about AD/AM setup failures due to spaces in paths.
  • Buck Hodges

    Data tier load with Team Foundation beta


    Did you install your beta data tier in Virtual PC or Virtual Server and see a high CPU load while its running?  Even on real hardware, you may notice some load when nothing would appear to be going on.  Someone mentioned on an internal mailing list that the data tier CPU load for a combined app and data tier installed in Virtual Server was quite high, averaging about 50-70% with most of that time being used by SQL analysis services (msmdsrv.exe).

    Well, here's the answer (I didn't write the question or the answer, but I hope people find it useful).

    The warehouse was designed to run processing every hour. For demo purposes the period was changed to 2 minutes in beta 2. On a weak system or a virtual machine you will see this behavior.

    Change the run interval on the app tier as follows.

    1. Stop TFSServerScheduler using 'net stop TFSServerScheduler'.
    2. Go to http://localhost:8080/Warehouse/warehousecontroller.asmx using a browser on the app tier.  Click on ChangeSetting and enter the following values and then press the 'Invoke' button (3600 seconds = run once per hour).
      1. settingID: RunIntervalSeconds
      2. newValue: 3600
    3. Restart TFSServerScheduler using 'net start TFSServerScheduler'.

    Note: It is important to restart TFSServerScheduler, as the interval is cached and will not take effect until the next run.

    You can also manually kick off the data warehouse.  Here are the steps to do so:

    1. Go to http://localhost:8080/Warehouse/warehousecontroller.asmx using a browser on the app tier.
    2. Click the ‘Run’ link.
    3. Press the ‘Invoke’ button.

     This will trigger a refresh of the reports.

    [Update]  Thanks to Mike for pointing out the the original instructions were a little rough.  I've updated them.

    [Update 2] Added msmdsrv.exe to the text to (hopefully) make it easier for folks to find the post when they notice that the Yukon April CTP Analysis Services process is consuming a lot of CPU time.

  • Buck Hodges

    Visual Studio Team Foundation Forum on MSDN


    Speaking of the forum, be sure to check out the Visual Studio Team Foundation forum.  Folks like Mike have posted useful information, and lots of MS folks are answering questions.  You may even get an answer from Rick LaPlante.

    The MSDN forums are nice, and they've obviously put quite a bit of work into them.  The forums are supposed to eventually replace the newsgroup, but I'm having a hard time finding what I haven't read once a thread changes.  Clicking through pages on the web site is too time consuming.  I was hoping that SharpReader was the answer since the forum has an RSS feed, but that's not been what I've expected.  I really miss being able to see quickly what I haven't read the way that Outlook Express shows newsgroup messages.  I'm hoping Josh Ledgard can help me see what I'm missing.  What I'd like to have is sort of a threaded RSS feed that SharpReader would use to show me what threads and replies I haven't read.  I answered pretty regularly on the newsgroup, and I'd like an easy way to do that now.  The tip about changing mode=0 to mode=1 is interesting, but it doesn't seem to do the trick either.

  • Buck Hodges

    SQL Server Reporting Services Permissions and Visual Studio Team Foundation Beta 2

    Mike Attili has a nice post on fixing reporting service permissions, Problems with SQL Server Reporting Services Permissions.  Bruce Taimana answered his post in the forum stating that was the correct way to handle it in the beta.
  • Buck Hodges

    VSTS pricing announced


    VSTS pricing is always a popular topic (see posts in January and June).  Finally the speculation is over, and the pricing was announced publicly today.

    Microsoft Details Pricing and Licensing for Visual Studio 2005 and Simplifies Microsoft Developer Network Subscriptions

    Frequently Asked Questions

    [Update 3/24] Rick LaPlante, general manager of VSTS, posted a great pricing grid here.  He also talks about the server pricing.

  • Buck Hodges

    Visual SourceSafe to Team Foundation Walkthrough


    Akash has posted two articles explaining how to use the conversion tool, VssConverter.exe, to migrate from Visual SourceSafe to Team Foundation Source Control.

    Walkthrough for migrating from Visual SourceSafe to Team Foundation

  • Buck Hodges

    Team Foundation Dogfood


    We're rapidly approaching the time for Whidbey Beta 2.  It is the first beta for Team System as a whole.  As a part of that, we'll be using it as our dogfood system.  I'm really looking forward to that, as each new dogfood "release" allows us to make more extensive use of features in the system.  We also get features that were missing, performance gains from tuning the system, usability improvements, and more robustness.

    John Lawrence, one of the Team Foundation dev managers, has posted the statistics for the current dogfood system that Team System uses.  Keep in mind that we are using the Dec. CTP release with patches.  That's right -- the code base for the system we use every day is essentially from mid-November.

    One of the very useful features that was rolled out for the first time with the current dogfood system was shelving.  Shelving has been very popular.  Developers use it constantly for everything from backups to code reviews.  You'll notice in John's post that there are 195 shelvesets in the system right now.  That's not counting all of the short-lived shelvesets that people created and deleted before the stat was snapped.

    The previous dogfood system we put in place actually remained in service for about six months.  That was the Whidbey Beta 1 Refresh with patches.  We got a lot of mileage out of that system.

    Our very first source control dogfood system (the current dogfood system has all the pieces of Team System) was one we set up over a year ago in one team member's office.  The Hatteras team used and ran that server for all Hatteras development.  Even at that early stage, we were able to make good use of it and not lose any data.  But we were only using Hatteras at that point.

    The current dogfood system is hosted in Redmond.  Our office is in Durham, NC.  The connection from our office to the corporate network is but a small fraction of what a corporate network provides.  That means we get the same experience as our customers with geographically-dispersed teams (we also have users on a couple of other continents).  I'm pleased to say that it's been an overall good experience.

    We've come a long ways from those earlier dogfood systems.  It's amazing to look back on how much has changed and how much we have learned in the process.  The experience has changed the product in significant ways.

    We are our customers.  Our colleagues are our customers.  We all provide feedback on the system, both on what works well and what we find frustrating.  It's made the product better.

  • Buck Hodges

    Installing the December CTP Release of Visual Studio Team System


    There's now a very detailed article on MSDN describing how to install VSTS on Virtual PCs.

    Installing the December CTP Release of Visual Studio Team System by David C. Bost
  • Buck Hodges

    Overview of Branching, Merging, and Shelving


    I wrote a post for the Team Foundation blog providing an Overview of Branching, Merging, and Shelving.

  • Buck Hodges

    Network programming links


    Adarsh Khare, who is a tester for the .NET networking classes, has useful blog.  Recent posts include the new NetworkInformation namespace that includes things like network availability events and a reference to an MSDN article on running ASMX without IIS.

  • Buck Hodges

    Team System Feedback

    Paul D. Murphy has a few good things to say about Team System in his Oh man is Team System Sweet post.
  • Buck Hodges

    BisRegEdit and related Dec. CTP mysteries

    Check out Jeff's new weblog.  His post from Monday may shed some light on Dec. CTP mysteries if you've ever run into messages regarding bisregedit.  Why BisRegEdit is sometimes the reported culprit of a failed install
  • Buck Hodges

    Using branching in source control to meet Sarbanes-Oxley requirements


    Someone posted this question recently in the newsgroups.

    I have a question concerning promotion processes using Source Control. Due to requirements from Sarbanes-Oxley (SOX), we will need to have tight controls on source code that is being checked into UAT and Production such that it will pass an audit showing that is being tightly controlled by the properly authorized personell. This, of course, is different from the requirements in the normal day-to-day development process.

    How will/should scenarios such as this be handled?

    Doug Neumann, the Hatteras PM, responded with the following.

    This is actually a really involved question and the answer ultimately depends on the tool you are using for source control.  I'm a program manager for Team Foundation, so let me explain to you how we advocate users do this. Just in case you aren't familiar with Team Foundation, you can read more at http://msdn.microsoft.com/vstudio/teamsystem.

    With Team Foundation, we advocate that users model promotion levels with branches.  Effectively, successive levels of promotion are handled in different branches of the source code.  Developers typically do their work in the branch corresponding with the lowest promotion level.  Changes are merged to higher levels of promotion when they are ready.  Following each promotion, there may be a period of stabilization in the target branch when developers can check in to that branch directly in order to address bugs that weren't caught before promotion.  With Team Foundation, we even have the ability to cherry-pick specific bug fixes when merging between branches, so you don't have to take unwanted changes from the source branch, even if they exist in the same file.

    With Team Foundation, as with VSS, we create branches in the path space of the repository.  To the user, the branch operation looks like a copy operation, but we maintain a lot of state about the relationship between files that makes it possible for us to handle merging changes in an intelligent fashion.  One nice thing about path-space branching is that we can use normal file system ACLs to manager access rights.  Where this comes into play with promotion modeling is that you can lock down each branch so that only authorized users are allowed to check in to them.

    So to get the SOX compliance you're looking for, we'd advise you to create at least 2 promotion levels.  The first would be the dev branch where day to day work is performed.  The second is the approved branch where approved changes are merged.  You would then lock down that second branch so that only the authorized personnel could check into it.  Because your source is in version control, you'll always have the audit trail of who changed what to prove that only authorized people have been making changes in that branch.

    [Update]  Fixed formatting.

  • Buck Hodges

    Command line reference (h.exe)

    The Team Foundation Version Control command line reference for the December CTP is now available.  I have posted it as an article as well.
  • Buck Hodges

    Team Foundation Version Control Command Line Reference document


    The docs are now on MSDN.

    Command Line Reference (Visual Studio Team Foundation)

  • Buck Hodges

    Team Foundation Version Control command line summary

    Rob Caron put together a very nice one-page command line summary for h.exe.  I've posted it as an article (Team Foundation Version Control Command Line Summary document).  Check it out if you want to see the list of command and options for h.exe.
  • Buck Hodges

    Team Foundation Version Control Command Line Summary document


    Command line summary for tf.exe.  This was put together by Rob Caron.

    You may also want to see the full Team Foundation Version Control Command Line Reference as well.

    This is pre-release documentation and is subject to change in future releases.




    tf Add itemspec [lock:none|checkin|checkout] [/type:filetype] [/noprompt] [/recursive]


    tf Branch olditem newitem [/version:versionspec] [/noget] [/lock] [/noprompt] [/recursive]


    tf branches [/s:servername] itemspec


    tf Changeset [/comment:comment|@commentfile] /s:servername [/notes:(“NoteFieldName”=”NoteFieldValue”|@notefile)] [/noprompt] ([/latest]|changesetnumber)


    tf checkin [/author:authorname] [/comment:("comment"|@commentfile)] [/noprompt] [/notes:(“Note Name”=”note text”|@notefile)] [/override:reason|@reason] [/recursive] filespec …]


    tf checkout [/lock:(none|checkin|checkout)] [/recursive] [/type:encoding] itemspec


    tf delete [/lock:(none|checkin|checkout)] [/recursive] itemspec


    tf difference itemspec [/version:versionspec] [/type:filetype] [/format:(visual|unix|ss)] [/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] [/options:"options"]


    tf difference itemspec itemspec2 [/type:filetype] [/format:(visual|unix|ss)] [/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] [/options:"options"]


    tf difference [/shelveset:shelvesetname;[shelvesetowner]] shelveset_itemspec [/server:serverURL] [/type:filetype] [/format:(visual|unix|ss)] [/ignorespace] [/ignoreeol] [/ignorecase] [/recursive] [/options:"options"]


    tf dir [/s:servername] itemspec [/version:versionspec] [/recursive] [/folders] [/deleted]


    tf get itemspec [/version:versionspec] [/all] [/overwrite] [/force] [/preview] [/recursive] [/noprompt]


    tf help commandname


    tf history [/s:servername] itemspec [/version:versionspec] [/stopafter:number] [/recursive] [/user:username] [/format:(brief|detailed)] [/slotmode]


    Option Set 1:

    tf label [/s:servername]  labelname@scope [/owner:ownername] itemspec [/version:versionspec] [/comment:("comment"|@commentfile)] [/child:(replace|merge)] [/recursive]


    Option Set 2:

    tf label [/s:servername] [/delete]  labelname@scope [/owner:ownername] itemspec [/version:versionspec] [/recursive]


    tf labels [/owner:ownername] [/format:(brief|detailed)] [/s:servername] [labelname]


    tf lock itemspec /lock:(none|checkout|checkin) [/workspace:workspacename] [/server:serverURL] [/recursive] [/noprompt]


    tf merge  [/recursive] [/force] [/candidate] [/discard] [/version:versionspec] [/lock:none|checkin|checkout] [/preview] [/baseless] [/nosummary] source destination


    tf merges [/s:servername] [source] destination [/recursive]


    tf permission [/allow:(* |perm1[,perm2,]] [/deny:(* |perm1[,perm2,])] [/remove:(* |perm1[,perm2,])] [/inherit:yes|no] [/user:username1[,username2,]] [/recursive] [/group:groupname1[,groupname2,]] [/server:servername] itemspec


    tf properties [/recursive] itemspec


    tf rename [/lock:(none|checkout|checkin)] olditem newitem


    tf Resolve itemspec [auto:(AcceptMerge|AcceptTheirs|AcceptYours)] [/preview] [(/overridetype:overridetype | /converttotype:converttype)] [/recursive]


    tf shelve [/move] [/replace] [/comment:(@commentfile|"comment")] [/recursive] shelvesetname[;owner] filespec


    tf shelve /delete [/server:serverURL] shelvesetname[;owner]


    tf shelvesets [/owner:ownername] [/format:(brief|detailed)] [/server:serverURL] shelvesetname


    tf status itemspec [/s:servername] ([/workspace:workspacename[;workspaceowner]] | [/shelveset:shelvesetname[;shelvesetowner]]) [/format:(brief|detailed)] [/recursive] [/user:(*|username)]


    tf undelete [/noget] [/lock:(none|checkin|checkout)] [/newname:name] [/recursive] itemspec[;deletionID]


    tf undo [/workspace:workspacename[;workspaceowner]] [/s:servername] [/recursive] itemspec


    tf unlabel [/s:servername] [/recursive] labelname itemspec


    tf unshelve [/move] [shelvesetname[;username]] itemspec


    tf view [/s:servername] [/console] [/noprompt] itemspec [/version:versionspec]


    tf workfold localfolder


    tf workfold [/workspace: workspacename]


    tf workfold [/s:servername] [/workspace: workspacename] repositoryfolder


    tf workfold [/map] [/s:servername] [/workspace: workspacename] repositoryfolder|localfolder


    tf workfold /unmap [/s:servername] [/workspace: workspacename] [/recursive] (repositoryfolder|localfolder)


    tf workfold /cloak (repositoryfolder|localfolder) [/workspace: workspacename] [/s:servername]


    tf workfold /decloak (repositoryfolder|localfolder) [/workspace: workspacename] [/s:servername]


    Option Set #1--Create New Workspace:

    tf workspace /new [/noprompt] [/template:workspacename[;workspaceowner]]

    [/computer:computername] [/comment:(“comment”|@commentfile)] [/s:servername]


    Option Set #2--Delete Workspace:

    tf workspace /delete [/s:servername] workspacename[;workspaceowner]


    Option Set #3--Edit Existing Workspace:

    tf workspace [/s:servername] [/comment:comment] [/newname:workspacename] workspacename[;workspaceowner]


    tf workspaces [/owner:ownername] [/computer:computername] [/s:servername] [/format:(brief|detailed)] [/updateUserName:oldUserName] [/updateComputerName:oldComputerName] workspacename


    tf workspaces /remove:(*|workspace1[,workspace2,...]) /server:(*|server)

  • Buck Hodges

    Setting Internet Explorer's home page by drag and drop


    Tim, who worked on IE among other things in his career at Microsoft and now works on Hatteras, showed me tonight that you can set the home page in Internet Explorer by dragging the link from the Address bar to the Home icon on the toolbar.  I had no idea.  I burst out laughing.  It's a neat trick once you know it, but it never occurred to me.  Perhaps it's because I don't change my home page.

    Someone's going to tell me that it's obvious, and I'm the only who didn't know about it.  Right.  It's an example of something that's really convenient, if you need that sort of thing, but not very discoverable (unless you often drag things over toolbar buttons just to see what happens).

  • Buck Hodges

    Timeouts on the HttpWebRequest (and thus SOAP proxies)


    Last summer I wrote several posts on using HttpWebRequest and SOAP proxies.  Recently I was working on code that needed to handle requests that could take a really long time for the server to process.  The client would give up and close the network connection long before the request completed.

    The code had tried to control that using the HttpWebRequest.Timeout property.  That helped, but it didn't solve the problem.  Without changing the Timeout property, the client gave up after 100 seconds, which is the default value for that property as stated in the docs.  The Timeout property was set to infinite, but the client gave up after five minutes.  Below is the doc for the Timeout property.

    Return Value

    The number of milliseconds to wait before the request times out. The default is 100000 milliseconds (100 seconds).


    Timeout is the number of milliseconds that a synchronous request made with the GetResponse method waits for a response, and the GetRequestStream method waits for a stream. If the resource is not returned within the time-out period, the request throws a WebException with the Status property set to Timeout.

    The Timeout property has no effect on asynchronous requests made with the BeginGetResponse or BeginGetRequestStream methods.

    Caution In the case of asynchronous requests, it is the responsibility of the client application to implement its own timeout mechanism. Refer to the example in the BeginGetResponse method.

    To specify the amount of time to wait before a read or write operation times out, use the ReadWriteTimeout property.

    At the end of that, notice that they mention another timeout value, the HttpWebRequest.ReadWriteTimeout property.  Here's the doc for that.

    Return Value

    The number of milliseconds before the writing or reading times out. Its default value is 300000 milliseconds (5 minutes).


    The ReadWriteTimeout is used when writing to the stream returned by GetRequestStream or reading from the stream returned by GetResponseStream.

    Specifically, the ReadWriteTimeout property controls the time-out for the Read method, which is used to read the stream returned by the GetResponseStream method, and for the Write method, which is used to write to the stream returned by GetRequestStream method.

    To specify the amount of time to wait for the request to complete, use the Timeout property.

    Well, there's the five minute timeout.  If you want to wait for a long request, which is greater than five minutes for the HttpWebRequest, you need to set both properties.  Using the information in the post from the summer, you can add code to your override of GetWebRequest() in your SOAP proxy to set the timeout to an hour, for example, using request.Timeout = 3600 * 1000 and request.ReadWriteTimeout = 3600 * 1000.

    You may also notice that the Timeout property doesn't apply to asynchronous calls that use the Begin/End call pattern.  For those, only the ReadWriteTimeout applies.

  • Buck Hodges

    Are you looking to convert from ClearCase to Team Foundation?


    The Program Manager for the ClearCase converter, Akash Maheshwari, wants to hear from Clearcase users interested in VSTS.  If you are a ClearCase user, this is your chance to influence the development of the converter.

  • Buck Hodges

    Branching and Merging in the Dec. CTP


    Back in the summer I wrote several posts on branching and merging in Team Foundation Source Control.  They are also relevant for the Dec. CTP if you are interested in this very important part of SCM.

Page 21 of 23 (564 items) «1920212223