Remote Desktop keyboard shortcuts for Windows 8

The following table contains keyboard shortcuts for working with Remote Desktop Connection on Windows 8. I have placed this list here primarily for myself, but it may be helpful to other developers using Remote Desktop and/or Hyper-V when developing software.

Press this key To do this
Alt+Page Up Move between apps from left to right
Alt+Page Down Move between apps from right to left
Alt+Insert Cycle through apps in the order that they were started
Alt+Home Display the Start screen
Ctrl+Alt+Break Switch between a window and full screen
Ctrl+Alt+End Display the Windows Security dialog box
Ctrl+Alt+Home In full-screen mode, activate the connection bar
Alt+Delete Display the system menu
Ctrl+Alt+minus (-) on the numeric keypad Place a copy of the active window, within the client, on the Terminal server clipboard (provides the same functionality as pressing Alt+Print Screen on a local PC)
Ctrl+Alt+plus (+) on the numeric keypad Place a copy of the entire client window area on the Terminal server clipboard (provides the same functionality as pressing Print Screen on a local PC)
Ctrl+Alt+Right arrow “Tab” out of the Remote Desktop controls to a control in the host app (for example, a button or a text box). Useful when the Remote Desktop controls are embedded in another (host) app.
Ctrl+Alt+Left arrow “Tab” out of the Remote Desktop controls to a control in the host app (for example, a button or a text box). Useful when the Remote Desktop controls are embedded in another (host) app.


Dell M4600 Performance Improvement (Disable Intel SpeedStep)

Last weekend I spent a little time working at home and I could not get over how much slower my notebook was performing. I unplugged the power adaptor (130w) to run on battery alone and my performance was back. Could this be right?! So, I downloaded a free benchmarking tool and ran a few tests. The performance running on battery alone was more than double than when using the 130 watt power adaptor.

I then began spelunking around in the BIOS to see what havoc I could bring to life. There was one setting I found to be very interesting: Intel SpeedStep. The Intel SpeedStep setting was enabled, which at first glance sounds good like enabling a turbo charger for your computer. However, disabling this setting “puts your computer in the highest performance state and prevents the Intel SpeedStep applet or native operating system driver from adjusting the processor’s performance”. Here are the results of my benchmark testing. I think most people will prefer to disable this “feature”.

Dell M4600 Performance Rating

Power Source SpeedStep On SpeedStep Off Battery Charges




Medium Adaptor (130w)



No charge, No drain
(charges when off or sleeping)

Large Adaptor (180w)




The most obvious results show that using a power supply with less than 180 watts with SpeedStep enabled cuts the performance about 53% to a rating of 289 – that is a huge drop. With SpeedStep disabled and using the 130 watt power supply, not only does the performance resume to 100% generating a performance rating of 624; the battery does not drain at all. It doesn’t charge either, but it does charge when the computer is in a sleep state or powered off; which will likely not be an issue for most people.

One thing also worth pointing out is the best performance numbers were obtained when using the 180w power adaptor with SpeedStep enabled. It is my belief that this highest rating is only sustainable for short periods of time and does represent a sustainable performance rating.

I have chosen to disable SpeedStep. Disabling the Intel SpeedStep may not be ideal for those of you who spend a significant amount of time working unplugged (on battery); however, I was able to use my computer for 4 hours this weekend on battery alone with SpeedStep disabled. Most people using a Dell M4600 are using it as a portable workstation and will usually be plugged into a power source.

There is one benefit I can think of in keeping the Intel SpeedStep enabled. If you are using a lower wattage power adaptor (e.g., 180w), it will reduce your processor performance enough to allow the lower wattage power adaptors to charge your battery while using your computer. But that is about the only advantage I can think of.

Changing the SpeedStep setting (Dell Precision M4600):

  1. Reboot computer and enter BIOS by pressing F12 (on the notebook keyboard)
  2. Select BIOS Setup
  3. Performance > Intel SpeedStep
  4. Un-check the Enable Intel SpeedStep
  5. Click Apply and exit BIOS.

The tool I used for benchmarking is NavaBench.

Below is additional information about the power adaptors I use for the M4600. I needed to look this up to confirm the wattage on the power adaptors. Power P in watts (W) is equal to the current I in amps (A), times the voltage V in volts (V):

P(W) = I(A) × V(V)

Dell Power Adaptors:

Power Adaptor Model Amps x Volts = Watts
Large (180w) DA180PM111 9.23 19.5 180
Medium (130w) DA130PE1-00 6.7 19.5 130

Error opening Word document

I was getting this error while trying to open a Word document using Word 2010. These steps also resolve the problem when opening an Excel document.


Error: “Word experienced an error trying to open the file.”


This is corrected a couple different ways. You can either correct a specific file, or you can change your Word (or Excel, etc) trust settings to permanently remove this security feature.

For one specific file:

  1. Go to the document properties in Windows Explorer (right-mouse click, select Properties).

  2. Click Unblock.
  3. Click OK.
  4. You should now be able to open the Word document.

To permanently change the setting for all files:

  1. Click File > Options
  2. Click Trust Center >Trust Center Settings
  3. Click Protected View
  4. Uncheck the following boxes:
    1. Enable Protected View for Files originating from the Internet
    2. Enable Protected View for Files located in potentially unsafe locations
    3. Enable Protected View for Outlook attachments

Resize iframe Using jQuery on SharePoint

JavaScript to resize an iframe on a SharePoint custom page.

<script type=”text/javascript”>
// id = jQuery id of the iframe to auto resize.
// lessHeight = the amount in pixels to subtract from the browser window height when resizing the iframe.
// minHeight = the minimum height of the iframe.
function ResizeIFrame(id, lessHeight, minHeight)
var newHeight = window.document.body.offsetHeight – lessHeight;
var iframeHeight = (newHeight < minHeight) ? minHeight : newHeight;

// Register an iframe to be auto resized.
function ResizeIFrameRegistration(id, lessHeight, minHeight)
// Resize the iframe with the browser window is resized.
$(window).resize(function() { ResizeIFrame(id, lessHeight, minHeight); });
// Resize the iframe when browser page is finished loading and ready.
$(document).ready(function() { ResizeIFrame(id, lessHeight, minHeight); });

ResizeIFrameRegistration(“#<%= pdf.ClientID %>”, 250, 300);

How to correct: The security validation for this page is invalid (FormDigest)

How to correct the security error on a custom SharePoint web page:
The security validation for this page is invalid. Click Back in your Web browser, refresh the page, and try your operation again.

Short Answer:

Use SPUtility.ValidateFormDigest() and do not use AllowUnsafeUpdates.

A Less Desirable Solution (but more commonly used)

One way to get around this issue is to set the web’s (SPWeb) AllowUnsafeUpdates property to true. This is not ideal, especially when there is a more secure option.

A Better Solution

This method configures the web page to properly cache and revalidate the necessary credentials preventing the “security validation” error noted above. And, there is no need to set the AllowUnsafeUpdate spweb property to true.
Coding Steps:
Register the SharePoint web controls assembly in your aspx. Place this at the top of the .aspx file:
<%@ Register TagPrefix="SharePoint"
Assembly="Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
Place the FormDigest control on the .aspx page (I place it near the end of the page):
<SharePointWebControls:formdigest id="FormDigest1" runat="server" />
In your page code-behind, call the ValidateFormDigest() method during the page OnInit() event to revalidate the page security. It is important to call the ValidateFormDigest method as early as possible in the page cycle.
using Microsoft.SharePoint.Utilities
protected override void OnInit(EventArgs&nbsp;e)
	if (Page.IsPostBack)
That’s it. Your custom SharePoint page should now successfully pass the security validation. It is also important to remember that you will need to also add the FormDigest control and call the ValidateFormDigest method in any custom user controls that are performing updates to SharePoint data.


Automatically Connect Your Mac to Shared Windows Network Folders

This posting covers how to create a script (application) for your Mac to automatically connect to a shared Windows folder when you login to your Mac.

Creating the Script

  1. Open the Apple Script Editor: Applications > Utilities > AppleScript Editor
  2. Enter the script code below:
    (Note: if you copy/paste this code you may need to re-type all the “double quotes” to correct the syntax.)
  3. Click the Compile button to validate your code.


tell application "Finder"
if not (exists disk "SHARED") then mount volume "smb://MyServer/MyShare"
end tell

Saving the Script File as an AppleScript file

This will save the script in a format that can later be edited, if you chose to make changes.

  1. File > Save
  2. Specify a name for your script. For example: MapNetworkServers.scpt
  3. File Format: Script
  4. Run Only: Unchecked

Saving the Script File as an Application

This will save the file in an executable format. This is the file that will run at login.

  1. File > Save As
  2. Specify where you want to save your script file, and specify a file name. For example: I created a folder called “Commands” in my Documents folder where I store my script and application file.
  3. Set the File Format to Application.
  4. Check the Run Only check box. This will cause the script to run and exit.
  5. Click Save.

You should now have two files:

  • MapNetworkServers.scpt – keep this file so you can modify this script in the future.
  • – this is the script you will use to configure to execute when you login.

Configure the Script to Run at Login

  1. Go to System Preference > Accounts
  2. Select the appropriate user; the user you want this script to run when they login.
  3. Select the Login Items tab.
  4. Click the “+” button at the bottom of the list of applications to add a new startup application.
  5. Browse to your file and select it.
  6. You should now see it in the list.
  7. Optional: You can check the Hide check box, if you like. I suggest not doing this until you know your script is working correctly.

That’s it. Your shared Windows server folders should now be mapped automatically when you login.

This sample script only maps one folder, the “MySharedFolder” folder. However, on my home network I have several folders on the same server that exist. If you have previously selected all the shared Windows folders (using Finder > Go > Connect to Server), and provide your login credentials to that server, all the shared folders on that server will appear; which is ultimately what I want anyway. This also allows your script to be shorter and easier to maintain by having to map one shared folder in your script instead of having to write a line of code for each and every shared foler on that Windows server.


Map Mac Parallels "Delete" key to "Backspace"

pd6fm_half_macbookParallels is a software product that allows users to run Windows 7 on their Mac computer. I must say, it works pretty darn well. The only real annoyance I have encountered thus far is how Parallels maps the “Delete” key. This makes the Delete and Backspace keys confusing. The Apple Mac “Delete” key and the Windows “Backspace” key are located in the same (approximate) location on the keyboard; and both keys even function the same on a Windows computer compared to a Mac computer. They delete the characters to the left of the cursor.

However, for those who use Parallels to host a virtual Windows 7 machine on their Mac computer, the Mac keyboard “Delete” key deletes the characters to the right of the cursor, which was driving me crazy. The user must press fn+Delete to perform the standard Windows backspace to delete the characters to the left. This may only be a problem for people using a Mac notebook keyboard or an external Mac wireless keyboard. I expect this is not a problem for those who use an external Windows keyboard on their Mac – assuming those people even exist.

How to Re-Map the Delete Key in Parallels

Here are the steps to change (re-map) the “Delete” key to the standard Windows “Backspace” key on your Windows 7 machine running in Parallels. I prefer this because it provides a consistent action for the “Delete” key – it always deletes the character to the left of the cursor regardless of whether I’m using Windows (named “backspace”) or Mac OS (named “delete”).

1)  Open the Parallels Preferences. You can find the Preference menu option by holding the “option/alt” button and clicking the red Parallels icon ‘||‘ at the top of your Mac desktop.

2)  Press the “+” button at the bottom of the shortcuts list to add a new ‘shortcut’.

3)  In the “From” key section, press the Mac “Delete” key. The word Delete will appear.

4)  In the “To” key section, select the “Backspace” key in the drop down box.

Now your “Delete” key will perform like a Windows Backspace key, deleting the characters to the left. Remember, you can also press fn+Delete to perform the standard Windows Delete key to delete the characters to the right.

Apple Terminology and Keys

(deletes the characters to the left of the cursor)

Forward Delete
(deletes the characters to the right of the cursor)


Apple Mac Keyboard


Windows Keyboard (typical layout)


URL Redirect Work-Around for

Summary: Redirect specific blog postings from your old blog to the respective page on your new blog. This covers how and when you can use this URL Redirection work-around for

Downloads: URLRedirect.html template file (zip)

I recently relocated my blog to And I must say, I have been very happy with what and have to offer. I believe WordPress is without question the best, most complete free blogging software available. For the blog author, WordPress provides a wide range of management, statistics, themes, and more. For the reader, WordPress can be consumed on a variety of devices with ease like the personal computer, mobile devices like iPhone and iPod Touch, and the newest form factor – iPad. WordPress has delivered everything I have wanted and more – with one exception… URL Redirection.

Anyone creating a blog for the first time or seasoned bloggers who have no need to move existing content (blog postings) from their old blog will not need URL redirection. But for those who are moving content from their old blog to a new blog on WordPress, and have their own domain name, URL Redirection would provide a better, more seamless browsing experience for readers.

We’ve all been there, clicking on a search result link expecting to find an article only to receive the “Not Found, Error 404” page instead. This is frustrating to say the least. After a bit of searching it is clear that WordPress does not support URL Redirection. However, I have created a work-around for bloggers to allow their readers to find (via redirect) an old article URL that has been relocated to their new blog.

Overview of the URL Redirect Work-Around

I admit, this “work-around” is not automatic, which would be best; but it does work. And, it’s an easy (and not very technical) way to redirect a user to the correct page – that will allow. In short, does not allow bloggers to use JavaScript, and I fully understand why. I have no complaints about that since is a shared hosting environment. But a simple bit of JavaScript is all that is needed to address this issue.

Domain Redirection

First, lets cover exactly what domain redirection (not URL redirection) is. Using the WordPress “domain redirection” feature only addresses half the solution to a complete redirection experience for the user. As I mentioned before this is not ideal, but this is what provides using their “domain redirection”. With domain redirection, when a user/reader clicks on a link/URL pointing to your old blog (for example:, the domain redirection tells the user’s browser to use your new domain name instead and “redirects” the user to the new domain (for example: The reality is that this domain redirection is really defined at your domain DNS (Domain Name Service) host – the network company where information about your domain name is defined and managed. Your DNS host (GoDaddy and Network Solutions are two popular companies) is where you define/configure the IP address for the server where your blog is hosted/located, which in this case the IP address would be whatever says to use for their severs.

What is doing when you purchase their Domain Redirection feature (along with the annual fee) is nothing more than telling their servers to accept any incoming browser request that uses your new/custom domain name and display your blog on So, Domain Redirection gets the reader to your new blog – but not to the correct page. Instead, what the reader will get is the “Not Found, Error 404” page. Yes, this does redirect the reader to your new blog, but not to the information or page you or the reader would like. This is completely useless to the reader, and frustrating for the blog owner.

To summarize, Domain Redirection requires two steps:
1 – Configure your domain name at your DNS host to point to the blog server(s).
2 – Configure your blog server to accept and display your blog when a user/browser uses your new domain name.

Before I cover how implement this, I first need to talk about what the user will experience using this work-around.

What is the user experience?

When a reader clicks on a link that is pointing to an article on my old blog, the reader is automatically redirected to a “Not Found, Error 404” page on my new blog. Here is a full screen snapshot of what the “Not Found, Error 404” page looks like. You’ll notice my “Redirect now” link off to the right, which I’ll talk about in a moment.


On the right column of my blog you’ll notice a section titled “Getting ‘Not Found, Error 404’?” like the image below. If the user clicks the “Redirect now” link they will be redirected to the correct link on my new blog.


When the reader encounters the “Not Found, Error 404” page, hopefully the reader sees the “Getting ‘Not Found, Error 404’?” widget on the right side of my blog. So far, indications are good that readers are seeing and using this link. The number of clicks to this “Redirect now” link are increasing daily.

Remember, the easier it is for readers to find what they are looking for on your blog, the more likely they will bookmark, share, or even link to your blog from their blog; which in turn increases your blog’s search engine rating, and increases traffic to your site.

How Does It Work

When the user clicks on the “Redirect now” link, an HTML page is loaded that attempts to identify what URL the reader is looking for, and then it redirects their browser to that page. This Redirect.html file must be stored (hosted) somewhere external to

I use to store my HTML file. It’s free and makes it very easy to edit the file locally and save it to the server for testing. This is because automatically syncs any changes to the server.

When the Redirect.HTML page is loaded, it executes a small bit of JavaScript in the readers web browser. The JavaScript inspects the URL (address) currently in the reader’s web browser, which is the URL (link) the reader clicked to get to your blog. Chances are the old URL contains enough information (most likely the end portion of the URL) to identify what article the user is looking for. Getting Google, Bing, Yahoo, and every other blog around the world to correct their links to my blog is simply not an option, and it shouldn’t have to be.

I understand and agree that this is not the optimal solution. The optimal solution will have to be implemented as a feature in the WordPress software. For those that host their own WordPress server, they can build (modify) this directly into their “Not Found” page and redirect the reader automatically, without the reader having to click anything. However, for those who use, this will give your readers a second chance to find the article they were originally aiming for.


Wally: Golly, Beaver. Wouldn’t it be swell if provided bloggers the ability to map URL Redirects?

Beaver: Gosh, Wally. That would make the best place to host a blog in the whole wide world!

Please excuse my sorry attempt at humor. :)

A Quick Demonstration

Here is a quick demonstration on how the URL Redirect works on my blog. Below is a URL from my old blog ( Since I have configured a “domain redirection” for my “” domain, it will connect to my new blog ( on Click on the link below to open a new window/tab to demonstrate. (This simulates an old link similar to that found on someone elses blog or in search results from Bing or Google.)

You will get the “Not Found, Error 404” page. The browser was redirected to the “Not Found, Error 404” page because my blog does not have a page at “…/Posts/Post.aspx?ID=42”. You will notice that even though the URL you clicked on started with “”, your browser URL/address now shows the URL starts with “”. So the domain name has been correctly redirected to “”, but the rest of the URL is still wrong and points to a non-existing page (Post.aspx). The URL in your demonstration browser should now look like this:

So, the “domain” redirection is working correctly, but the full URL Redirection does not happen and will not happen automatically since URL Redirection is not supported on The new location for this article on my new blog is now located at the “I’m mentioned (twice)…” link below. What we need is to somehow tell or the web browser that when a reader tries to browse to my blog and the URL contains a unique value of “ID=42”, then automatically redirect the reader to the URL below.

Since we cannot automatically redirect the user, we must ask the user to click on a link, that will in-turn redirect the user to the following page. So, now if you click the “Redirect now” link on the right side of the “Not Found, Error 404” page you got earlier, you should be redirected to the following page.

How To Implement This On Your Blog

The great thing about this work-around is – it’s pretty easy to implement and requires very little technical knowledge! If you can blog, chances are you can do this. Gathering your old URLs will be 90% of the effort.

Here is an overview of what is required:

  1. Gather a list the URLs you want to map from your old blog along with the new URLs on your blog. Remember, your old blog does not need to exist. More on that below.
  2. Redirect your custom domain to, and configure your custom domain on There is a nominal annual fee. Read more about it.
  3. Create your custom Redirect.html page. I have a template for you to use in the download section of this article. This HTML file defines your old-to-new URL mappings.
  4. Place a “Text” widget on your blog containing your “Redirect now” link.

1 – Gathering a list of old and new URLs

If your old blog is still up and running, you can easily obtain the old URLs. For those that do not have their old blog running, you can probably obtain the old URLs from Google and Bing. I suggest you check both. You do this by running a search on both Bing and Google that limit the results to only your domain. You perform a search on both search engines for: “”. This will list all the results in the search engine that point to your domain. Many of these will likely be old URLs. Gather all the URLs you want to redirect listing the old URL and the new URL next to each other. When your list is complete, you will have completed about 90% of the work effort.

2 – Redirecting your custom domain to

For this step I ask that you refer to online help for custom domains (Read more about it.), and support.

3 – Create your custom Redirect.html file

The Redirect.html page is very basic HTML page. Most of the content in this page is the JavaScript that performs the redirection. The only thing that must be modified is the LoadRedirects function, and a section at the very end of the file. Be sure you don’t change anything else. The LoadRedirects function is where you define your URL Redirect mappings. Each redirect mapping is defined by a AddRedirect statement.

The AddRedirect statement has two parameters. The first parameter defines the URL (unique segment or portion) found in the old URL. This does not need to be the full address of the URL. It only needs to be something unique to that old URL. In my case, the end of my old URLs contained a unique “ID=” value. The example below shows an AddRedirect where the old unique URL value is: “ID=42”. The second parameter defines the full URL to the post/page on your new blog. This must be a complete URL to new posting on WordPress. This is where the reader will be redirected to. Here are two sample AddRedirect statements.

this.AddRedirect("ID=42", “”);
this.AddRedirect("ID=4", “”);

One more important point. When sequencing your old URL segments/identifiers, be sure to place the more specific old URLs first. Using the example above, the “ID=42“ is defined before the statement containing “ID=4”. If “ID=4” is placed before “ID=42”, then the new URL defined with “ID=4” will always be used when the reader clicks a link with “ID=4”, or “ID=42”, or “ID=400”, or “ID=4123”, or any old URL containing “ID=4…”.

The very end of the Redirect.html file also needs to be modified to contain your domain name, and optionally a custom Not Found page URL of your choice.

// ************************************
 // MODIFY THIS STATEMENT to contain the your domain. This defines a
 // custom URL to return when a URL Redirect mapping is not defined.
 // This URL does not need to exists since the standard WordPress
 // "Not Found, Error 404" page will be displayed if it does not exist.
 // ************************************
 var mgr = new RedirectManager("", false);

4 – Place a “Redirect now” link on your blog

Place a Text widget near the top of your blog so that your “Redirect now” link is easily seen. You can copy this code below into your Text widget to create something similar to mine. Be sure you replace the href value with the full URL to your Redirect.html file. If you are using you need “copy the public link” and paste that URL (link) to the href value.

I recently moved my blog to this site. So, if you get a <span style="color:#ff0000;">"Not Found, Error 404" message, chances are the post you are looking for is still here on my new blog.

* Click here to <span style=”color:#ff0000;”>>Redirect now.

For Those Interested In More Detail…

For those of you interested in a more detailed explanation I have take the time to elaborate, and opine, on a bit more detail.

URL Redirection vs. Domain Redirection

Do not confuse “URL redirection” with “domain redirection”. WordPress does support “domain” redirection. If you have your own domain name (i.e. or sub-domain name (i.e., will allow you to configure your blog have its own domain, for a nominal annual fee. To be honest, most of this configuration is really done through your domain registrar to point your domain name to But must also be configured so that it knows what blog to display to the reader when a custom domain name is used. This is still necessary, so Domain Redirection will still be used, but this does not entirely solve the problem of getting your reader to the correct article on your new blog. Instead they get hit a dead-end: “Not Found – Error 404”.

Unique URLs (Not Found – Error 404)

So, domain redirection does at least get the reader to the new web site on This is all well and good, but… as most of you already know, each posting on your old blog has a unique URL (web address); which will almost certainly be different than the new URL for that same posting on your new blog.

So, WordPress has really done little to help redirect the reader. It will merely get them to your new blog and present them with the mostly annoying and useless “Not Found – Error 404” page. This is not a very nice user experience. We’ve all encountered this before. What do we end up doing? We skip this site and go to the next link in our search results. This is because none of us wants to waste time searching for something we aren’t even sure exists. This is a missed opportunity the blogger/author (and the blogging software) should address.

JavaScript Not Allowed does not allow for any JavaScript, which is completely understandable for security (and support) reasons. There is no argument from me on this point.

Keep in mind, although does not allow JavaScript for bloggers, WordPress most certainly uses JavaScript to provide much of the rich administrative features in WordPress.

SharePoint Feature Activation Extension Methods

Extend your SharePoint Features collection with an IsActivated, EnsureActivated, and EnsureDeactivated methods. These extensions will be available for activating or deactivating features for a Web, Site Collection, Web Application, and Farm.

public static class SPFeatureCollectionExtensions
  public static bool IsActivated(this SPFeatureCollection features, Guid featureId)
    return features.Cast<SPFeature>().FirstOrDefault(f => f.DefinitionId.Equals(featureId)) != null;
  public static bool IsActivated(this SPFeatureCollection features, string featureId)
    return IsActivated(features, new Guid(featureId));
  public static void EnsureActivated(this SPFeatureCollection features, Guid featureId)
    if (!IsActivated(features, featureId))
  public static void EnsureActivated(this SPFeatureCollection features, string featureId)
    EnsureActivated(features, new Guid(featureId));
  public static void EnsureDeactivated(this SPFeatureCollection features, Guid featureId)
    if (IsActivated(features, featureId))
public static void EnsureDeactivated(this SPFeatureCollection features, string featureId)
    EnsureDeactivated(features, new Guid(featureId));

Usage Examples:


Source Control Explorer is disabled, grayed out

If your Source Control Explorer menu link is disabled (grayed out), you need to be sure the default source control plug-in for Visual Studio is set to Team Foundation Server.

This is usually just a simple oversight for those of us that use TFS quite often. But since this has happened to me more than once and I don’t seem to remember the fix as quickly as I would like, I have noted it here for easy recall and for anyone else.

  1. Open Visual Studio
  2. Select the menu: Tools > Options
  3. In the Options dialog select: Source Control > Plug-In Selections
  4. Select Visual Studio Team Foundation Server

Maybe the action of posting this will be enough to help me remember.  :)