The opinions expressed in these materials are my own and are not necessarily those of Microsoft.
Copyright © Microsoft Corporation. All rights reserved. Unless otherwise indicated, all source code provided is licensed under the Microsoft Public License (Ms-PL).
Folks I will be on vacation until 8/5. See you all in a couple of weeks :)
p.s. Unfortunately I’m not going to the great place shown in the picture…
You can use Navigate To to search for objects, definitions, or references (symbols) in a solution. If you happen to remember the old Navigate To dialog box then you know it was useful but blocked your view of the code:
The new Navigate To dialog is much less intrusive. Just press CTRL+,[comma] to see the new dialog:
The Navigate To experience will look one of two ways while you are using it. If the symbol is in any open document the relevant line will be highlighted within it:
If the symbol is not in an open document then it will show up in the Preview Tab:
There is only one search option when using Navigate To that will include (or exclude) external items:
At any time you can press ESC to close Navigate To and go back to your original code.
In case you haven’t heard we acquired InCycle’s InRelease Business Unit. Here is information on InRelease from the website (http://www.incyclesoftware.com/inrelease/):
More interesting is the information from Brian Harry (http://blogs.msdn.com/b/bharry/archive/2013/07/10/inrelease-acquisition-is-complete.aspx):
[NOTE: Extra space added by me]
At TechEd, in early June, I announced our agreement to acquire InRelease – a release management product built specifically for Team Foundation Server by InCycle Software. Since then, we’ve received tons of requests for more information, demos, etc. Unfortunately, we’ve only been able to point people at InCycle because the acquisition was not final. I’m happy to say that about a week ago we closed the acquisition and InRelease is now a part of Microsoft.
That doesn’t mean we can start selling it right away. There are a number of things that have to happen in order to enable that – getting it on our price lists, shipping a version that is properly branded, serviceable, etc. All of that will take a few months but there are some good options for you in the interim. Let me share some of them.
Hopefully these two paths will solve everyone’s needs while finish up the changes we need to make.
I also want to say a few words about licensing so you, at least, have a little context on what to expect. We are not ready to announce pricing but I can share a bit about the structure of the licensing.
For now, we are focused on getting InRelease integrated into our on premises product. We will also support our cloud service but that will come a bit later.
Please give it a try and give us any feedback you have. As you might imagine, we are currently working on developing and prioritizing our backlog.
This is a multi-part series, you can find the other parts here:
Understanding IntelliTrace Part I: What the @#$% is IntelliTrace?
Understanding IntelliTrace Part II: Where Do I Use IntelliTrace?
Understanding IntelliTrace Part III: IntelliTrace Events
Understanding IntelliTrace Part IV: IntelliTrace Calls
Before we get started I want to be absolutely clear: there is nothing “advanced” about the setting we are going to talk about. The word “advanced” in this case could (and probably should) be replaced with “miscellaneous” or, better yet, “stuff you should always have turned on”. I am, of course, talking about the setting found at Tools | Options | IntelliTrace | Advanced:
We will go though each of these in order and make sure you are clear on reasons for usage. Remember we are using the Brian Keller Virtual Machine with the Tailspin Toys sample code for these posts although this specific post can be used with any codebase.
Running IntelliTrace sessions is great but the experience ends when you stop debugging. Try it and see what I mean. Get some IntelliTrace info up doing one of the exercises in the previous post:
Now stop debugging. Notice the IntelliTrace window completely goes away and there is no way to bring it back UNLESS you start a new debugging session or record an IntelliTrace log file. How do we get a log file? Just go to | Options | IntelliTrace | Advanced and select Store IntelliTrace Recordings In This Directory:
You might also want to create a new local directory with a shorter path to hold your logs:
Now you have a place for your IntelliTrace sessions to be stored:
We will dig into the specifics of what the log files contain in a later post however feel free to open one of these up and poke around on your own if you want.
The next decision to make is our log file size. I suggest a minimum of 500MB to 1GB regardless of activity. If in doubt then go with No Size Limit but watch the file closely. Choose your size carefully. Here are the criteria you need to consider when choosing log file size:
The log files are cyclic which means that when it fills up it will begin overwriting the oldest entries in favor of newer ones.
Are you collecting Events Only or Events and Calls? Events Only consumes much less space so you can go with smaller log sizes if needed. Events and Calls will require significantly more space so plan accordingly.
The size of your log file determines, in essence, your time window. Capturing 500MB will capture half the time window that 1GB will. Since the log files are cyclic they will only capture a sliding time window until the trace stops.
We will explore navigation more in another post but, for now, leave this setting selected:
This will give you special navigation features that are useful when troubleshooting IntelliTrace Calls:
Turning it off simply removes the navigation buttons and the gutter:
Selecting the Enable Team Foundation Server Symbol Path Lookup option will enable the system so that when you are using IntelliTrace or an IntelliTrace log file it can use the build information to automatically try and pull down the matching symbol information for the build you are debugging. This option assumes you have a TFS Build server set up.
Selecting the Prompt To Enable Source Server Support option actually will give you a dialog that will automatically turn on another option found at Tools | Options | Debugging | General | Enable Source Server Support:
To clarify what this means I’ll point you to the documentation on this option and what it says:
Tells the Visual Studio debugger to get source files from source servers that implement the SrcSrv (srcsrv.dll) protocol. Team Foundation Server and and the Debugging Tools for Windows are two source servers that implement the protocol.
To expand on this we can go to another source for more information:
When there is no source code on the local machine or the PDB file does not match the source code, you can use Source Server to help debug an application. Source Server takes requests for files and returns the actual files. Source Server runs by means of a DLL file named srcsrv.dll. Source Server reads the application's PDB file, which contains pointers to the source code repository, as well as commands used to retrieve source code from the repository.
This area of IntelliTrace is fairly easy to wrap you head around in terms of decision-making: turn everything on. The only real question is what size your log file needs to be. As I teach you more advanced techniques just make sure you don’t fill up your drive with an unattended IntelliTrace session that is being logged.
Apologies for going dark on you suddenly. I have not stopped writing to the blog permanently. We are in the last quarter of our fiscal year and it’s a bit of a sucker doing customer visits and webcasts and blogging so I’ve suspended the blogging until July. Thanks for reading the blog and I am answering comments as they come up. I will also be finishing the series on IntelliTrace as planned once this fiscal ends. Good times!
For folks that haven’t seen this it’s great guidance on TFS implementation. Here is a blurb from the site:
This solution delivers practical and scenario based guidance for the implementation of Team Foundation Server. We guide you through the decisions whether to have one or more Team Foundation Servers, one or more Team Project Collections, one or more Team Projects and one or more Teams, based on scenarios and implications of each decision. In addition we cover disaster recovery planning with a focus on avoidance, frequently asked questions and a collection of real-world reference stories.
I’ve had some customers that are experiencing this issue so wanted to get it out more broadly in case you are having similar problems. Buck Hodges has written a blog post on symptoms and resolution here:
The KB article can be found here:
There are several other issues fixed with this TFS Update. Here is the list of issues that are fixed (for more detail go to the KB article):
A customer asked me the other day about excluding different files (or directories) based on the type of build happening. Specifically they wanted to exclude some files for Release builds and others for Debug builds.
Here is the general info on how to exclude files from builds:
Within the article you will want to take a look at the Condition attribute which specifically calls out how to exclude based on build type:
Condition=" '$(Configuration)' == 'Release' " />
I had a customer accidentally delete some test cases in Team Foundation Server the other day and call me in a panic. Fortunately they had good backups and the story ended well but I thought it would be good to review what is needed in case you accidentally delete your work items.
TFS uses databases and, therefore, the key to recovering in TFS is making sure you are backing up and are able to recover the underlying databases. Here is the guidance on how to do just that:
Not all artifacts are easy to recover. Test Plans are particularly fun to get back so my friend Angela wrote an article about how to recover in those special situations:
Being able to recover means having a good relationship with your database administrator. Make sure you are in sync on the TFS install and what pieces of the deployment are high value vs. low value projects, etc… Like in most things communication is the key to success and there is not such thing as over communicating when it comes to your TFS instance…
…Okay there IS such a thing as over communicating so don’t, for example, hire an airplane to fly over your building with your favorite table name from the TFS database.
Did you know as an MSDN subscriber of any level you have access to a personal online valet of sorts? It’s called the MSDN Online Chat which is totally misleading in my opinion. I prefer to call it the “Online Concierge” as that is more in-line with what the service does.
Okay so what DOES this service do? Well let’s start by being clear about what they do NOT do: they are not, repeat, are NOT technical support. Period. We have technical support avenues but this is not one of them. What this service does is look up information for you so you can continue to work on other things. The best way to show you is by example, so here we go…
I recently did a post about the new VS2012 Update 1 and wanted some additional links. I was also busy working on some midyear performance review items so decided to let the concierge handle finding the info. Below are the steps you would follow to do the same thing I did.
To get started, you go to the main MSDN site (http://msdn.microsoft.com) and click on the link to access your benefits:
At the bottom of the list of benefits you will see the MSDN Online Chat:
I want to reemphasize that THIS IS NOT TECHNICAL SUPPORT. These folks are paid to be your research assistants as you can see by the description and/or answer MSDN benefits questions. In this case I got “Harrison” and asked him about documentation on VS2012 Update 1:
Below is the rest of the transcript, that I had emailed to me from the chat window, from the conversation verbatim with extra space, some commentary, and emphasis added:
info: Please wait for an agent to respond. You are currently '1' in the queue. info: Privacy Statement
You are now chatting with 'Harrison'.
Harrison: Thank you Zain for contacting the MSDN Online Concierge. How may I assist you today? Zain Naboulsi: hello harrison, can you tell me where to find information on Visual Studio 2012 Update 1?
Harrison: Thank you for your inquiry. Let me provide you the download link, Zain. Just one moment please.
[ZN: I wanted to simulate having to run off to lunch or go to a meeting or something here to show how awesome they are. They will do the research and email you the result later on.] Zain Naboulsi: I need to jump off can you email it to me?
Harrison: Sure, may I know if you are referring to the Visual Studio Team Foundation Server 2012 with Update 1? Zain Naboulsi: Nope just want the list of bug fixes and new features in Visual Studio 2012 Update 1
[ZN: Highlighted below is the standard disclaimer you will usually get when doing one of these sessions. They are great helpers and research assistants but they are NOT TECHNICAL SUPPORT. Not sure if I mentioned that 100 times already or not but wanted to be clear] Harrison: Thanks for your clarification. I will see if I can help to find some documentation that will point you to the right direction. However please understand that we are not technical professionals, and if we are unable to locate anything specific for your concern, I can also provide you some other support options. May I know if that's OK for you? Zain Naboulsi: sounds good :)
Harrison: Thank you for your understanding. May I know your preferred email address please? Zain Naboulsi: email@example.com
Harrison: Thank you. I will send it to you later after my researching, Zain. May I know if there is anything else I can help you with at this time? Zain Naboulsi: that should do it, thanks for your help :)
Harrison: My pleasure. If you have any further concern, please feel free to come back again. We are open 24 hours a day, seven days a week. Harrison: Take care and bye for now. Harrison: Have a nice day. info: Your chat transcript will be sent to firstname.lastname@example.org at the end of your chat.
And there you have it! I’ll bet twenty bajillion dollars that you didn’t know about this benefit already. Most people don’t so don’t feel bad. These folks are available 24/7 so take advantage of your new research assistants to help you find things out!