Extension Analyzer is an Extension to Visual Studio 2010 that allows browsing several extensibility entities inside of Visual Studio. It also allows diagnosing several common errors loading extensions by reporting information from logging services inside Visual Studio.
The Extensibility team in Visual Studio has recently added several exciting features to the Extension Analyzer tool. In addition to browsing through Visual Studio Packages and MEF Extensions, it is now possible to browse through the collection of VSIX extensions and PkgDef files installed on the machine. The tool scans the contents of the VSIX extensions and PkgDef files and establishes relationships between the VS Packages, VSIX extensions, PkgDef files and MEF Components. These relationships allow navigation between the different entities.
The latest version of the tool can be downloaded from the Visual Studio Gallery. This post describes in detail the new features added to Extension Analyzer.
Extension Browser VSIX Tab
The new VSIX Tab displays information about installed VSIX Extensions. Each VSIX Extension has a unique VSIX Identifier plus other information about the Extension. When a row is selected in the grid, the Properties window updates with information about the selected VSIX.
The VSIX Tab has a checkbox to toggle showing System Components or not. This allows reducing the amount of data the user sees, which typically does not need to browse through System Components. A System Component is a VSIX whose manifest has the SystemComponent property set.
It is also possible to navigate back and forth between the VSIX Tab to see the definitions of VSIX units and the Log Viewer to see log events related to a specific VSIX. To collect events in the Log Viewer, remember to start Visual Studio with the /log switch.
Selecting the context menu on a VSIX row includes the following actions:
- Navigate to Log entries for selected VSIX.
- Open VSIX Manifest in Visual Studio editor as XML.
- Open VSIX folder.
Extension Browser PkgDef Files Tab
The PkgDef Files Tab displays information about PkgDef files available to Visual Studio. Each row shows the short name of a PkgDef file, its path and if the PkgDef file is a System Component or not. This tab is also fully integrated with the Properties Window in Visual Studio.
The value for System Component property is inherited from the VSIX that contains the PkgDef, if any. If the PkgDef did not come from a VSIX, the value for System Component is undefined (blank), because there is no exact way to determine if the PkgDef is a System Component or not. The PkgDef Files Tab contains a checkbox to toggle showing System Components or not. This is again to reduce the amount of relevant data the user sees.
If a PkgDef file was deployed through a VSIX Extension, the value for the property VSIX Identifier contains the identifier of the corresponding VSIX. This value can be used to navigate to the corresponding VSIX Extension in the VSIX Tab and observe several other properties of that VSIX.
Several PkgDef files (specially System Component ones) are not deployed through VSIX and their VSIX Identifier property will be empty. It is possible now to filter out columns with empty values by entering a filter like this in the Filter control of the tab:
Notice that the “-“ prefix filters out the rows with empty values. Without the “-“ or with a “+” prefix will include the rows with empty values.
Similar to VSIX, it is also possible to navigate back and forth between the PkgDef Files Tab to see the definitions of PkgDef files and the Log Viewer to see log events related to a specific PkgDef file.
Selecting the context menu on a PkgDef file row includes the following actions:
- Navigate to Log entries for selected PkgDef.
- Navigate to VSIX that installed selected PkgDef (if available).
- Open PkgDef file in Visual Studio editor as XML.
- Open PkgDef file folder.
Updates to VS Packages Tab
The VS Packages Tab of the Extension Browser has been updated with a couple of features. There is now a new PkgDef File Identifier column that links a VS Package to the PkgDef, if any, that registers the package. The association between VS Packages and PkgDef files is done using the Codebase or Assembly properties for Managed packages or the Path property for Native packages.
Several VS Packages internal to Visual Studio are registered directly during Setup and do not have PkgDef files associated with them. However, most VS Packages created by external users using Visual Studio 2010 will have PkgDef files and VSIX deployable units associated with them.
There is also a new VSIX Identifier column that links a VS Package to the VSIX that deployed the package. These associations are computed using the PkgDef files that registered the VS Packages. Basically, a VSIX is associated with a VS Package if the VSIX contains a PkgDef file that registers the package.
The Is System Component column is now computed from knowing if a VS Package is internal to Visual Studio or if the VSIX of the VS Package is marked as a System Component.
Selecting the context menu on a VS Package row includes the following actions:
- Navigate to VSIX that installed the selected VS Package (if available).
- Navigate to PkgDef file that registered the selected VS Package (if available).
- Open VS Package file folder.
Updates to MEF Components Tab
The MEF Components Tab of the Extension Browser has been updated with a couple of features as well. First, there is a new VSIX Identifier property for each MEF entity that allows correlating the MEF entity with a VSIX Extension that deployed the entity, if any. It is now possible to navigate to the VSIX Tab from a given MEF entity.
One other feature added is to include a System Component column for each MEF entity. The value of this property is inherited from the VSIX that deployed the entity and allows filtering System Components using the Show System Component checkbox. This again substantially reduces the amount of data that external users see, showing only components that are more relevant and not internal to Visual Studio.
The following context menus were added to MEF entities:
- Navigate to VSIX that installed the selected MEF entity (if available).
- Open MEF entity folder.
We hope you find the new features in this tool useful.
Mynor Ivan Muralles, Software Design Engineer, Visual Studio Team