| Author: |
Carlos J. Quintero (Microsoft MVP) |
Applies to: |
Microsoft Visual Studio .NET 2002 |
| Date: |
September 2008 |
|
Microsoft Visual Studio .NET 2003 |
| Updated: |
March 2013 |
|
Microsoft Visual Studio 2005 |
| |
|
|
Microsoft Visual Studio 2008 |
| |
|
|
Microsoft Visual Studio 2010 |
| |
|
|
Microsoft Visual Studio 2012 |
Introduction
This article explains how to use the Process Monitor tool to diagnose add-ins
problems. The Process Monitor tool was developed by SysInternals, a company
later adquired by Microsoft, and now is supplied by Microsoft Technet:
Process Monitor
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
The Process Monitor tool allows you to spy Registry, File System and Process and
Thread activity, and superceedes the old Registry Monitor and File Monitor
tools.
More Information
The Process Monitor tool allows you to diagnose add-ins problems in the
following areas:
- Setups failing to install or register an add-in
- Visual Studio failing to recognize an add-in in the Add-In Manager
- Add-ins failing to work properly without admin rights (for example in Windows
Vista)
The Process Monitor tool allows you get a trace of all the Registry or File
System activity of a process, so it can provide an invaluable information to
guess why an add-in is failing.
To use the tool:
- Download and unzip the tool.
- Run the tool (ProcMon.exe) with admin rights (on Windows Vista and higher, right-click the
"Run as administrator" context menu).
- When the tool is launched, the Process Monitor Filter dialog window is shown,
to allow you to filter the process that you want to monitor. Since there is a
lot of activity from processes in a Windows operating system, it is convenient
to filter just the process that your are interested in, such as the setup of
your add-in, the regsvr32.exe process, the Visual Studio process (devenv.exe),
etc. You filter a process using conditions such as "Process Name is <value> then
Include" or "Process Name is not <value> then Exclude". Notice that, by default,
Process Monitor sets filters to exclude itself and the System process.
- You can set a filter at any time using the "Filter", "Filter..." menu, but it
is preferable to set it at startup.
- For the example of this article, to diagnose a problem where Visual Studio
fails to recognize an add-in in the Add-In Manager, you would set a filter like
"Process Name is not devenv.exe then Exclude".
- Once you have set the filter, you can select in the toolbar which events to
show through the toggle buttons "Show Registry Activity", "Show File System
Activity" and "Show Process and Thread Activity". For the example of this
article, just keep checked the "Show File System Activity" button.
- To start/stop the capture of events you check/uncheck the "File", "Capture Events"
menu (Control + E).
- To clear the display you click the "Edit", "Clear Display" menu (Control + X).
- To export the results to a file you can use the "File", "Save..." menu. You can
export to a .csv file to import it in Excel, for example.
- For the example of this article, we will discover why Visual Studio 2008
doesn't recognize add-ins registered with an .AddIn XML file stored in the
folder "%ALLUSERSDOCUMENTS%\Microsoft\MSEnvShared\AddIns" that appears in the
"Tools", "Options" window, "Environment", "Add-in\Macros Security" section and
that was introduced by Visual Studio 2008 (it didn't exist in Visual Studio
2005). See the article INFO: Default .AddIn file
locations for Visual Studio add-ins. When Process Monitor is configured and
capturing events with the filter set, just open Visual Studio 2008 and open the
"Tools", "Add-In Manager" window. At this point stop capturing events in
the Process
Monitor tool.
- You get a long trace of file system activity. Buried in the middle of the trace
you will find the following entries:
|
Sequence |
Time of Day |
Process Name |
PID |
Operation |
Path |
Result |
Detail |
|
34083 |
24:28,4 |
devenv.exe |
2780 |
CreateFile |
C:\Program Files\Microsoft Visual Studio
9.0\Common7\IDE\%ALLUSERSDOCUMENTS%\Microsoft\MSEnvShared\Addins\ |
PATH NOT FOUND |
... |
|
34084 |
24:28,4 |
devenv.exe |
2780 |
CreateFile |
C:\Documents and Settings\All Users\Application
Data\Microsoft\MSEnvShared\AddIns |
SUCCESS |
... |
|
34085 |
24:28,4 |
devenv.exe |
2780 |
QueryDirectory |
C:\Documents and Settings\All Users\Application
Data\Microsoft\MSEnvShared\AddIns\*.addin |
SUCCESS |
... |
As you can see, while Visual Studio 2008 correctly scans the "C:\Documents and
Settings\All Users\Application Data\Microsoft\MSEnvShared\AddIns" folder
searching for .addin files, it fails to replace correctly the
%ALLUSERSDOCUMENTS% placeholder (somehow it uses the unrelated "C:\Program
Files\Microsoft Visual Studio 9.0\Common7\IDE" folder) and therefore it won't find .addin files stored
in that folder.
Go back to the 'Resources for Visual Studio .NET extensibility' section for more articles like this
|