Isolated Shell Extensibility Points

An Microsoft Visual Studio 2008 Shell (isolated mode) custom tool has full access to Visual Studio services and also maintains a custom appearance with extensive branding. There are several ways you can customize your isolated shell custom tool, as follows:

  • You can change the items in the custom tool stub .pkgdef file to brand the title bar, splash screen, icon graphics, start page, and more.

  • You can replace the default About dialog box code that is written by the isolated shell project template wizard.

  • You can turn on and off Visual Studio feature sets and menu command groups by changing the settings in the isolated shell user interface (UI) .vsct file.

  • You can selectively remove Options pages and other UI components by deleting their system registry entries by using the custom tool stub .pkgundef file.

Several of these customizations are highlighted in the Walkthrough: A Basic Isolated Shell Custom Tool.

The PKGDEF File

The isolated shell custom tool stub .pkgdef file supports the following custom options.

  • AddinsAllowed
    Indicates whether Add-ins can be loaded or not. If not indicated, then VARIANT_TRUE is assumed. For example, "AddinsAllowed"=dword:00000001

  • AllowsDroppedFilesOnMainWindow
    If true, the main window should accept dropped files. The default value is true. For example, "AllowsDroppedFilesOnMainWindow"=dword:00000001

  • AppIcon
    The path of the program icon. This icon appears in the title bar to the left of the custom tool name. For example, "AppIcon"="C:\Program Files\Microsoft Visual Studio 9.0\Setup\Setup.ico".

  • AppName
    The custom tool name. This name appears in the title bar of the shell. For example, "AppName"="My Company Name".

  • DefaultDebugEngine
    The GUID of the default debug engine to use for this custom tool

    For example, "DefaultDebugEngine"="{00000000-0000-0000-0000-000000000000}"

    注意

    :   A DefaultDebugEngine GUID of all zeroes specifies that the default .NET debug engine will be used.

  • DefaultHomePage
    Specifies the default home page URL for the Web Browser window. This appears when the View/Other Windows/Web Browser is selected. For example, "DefaultHomePage"="https://www.microsoft.com"

  • DefaultProjectsLocation
    Specifies the full path of the projects location. This string overrides the 'Visual Studio Projects' location. For example, "DefaultProjectsLocation"="$MyDocuments$\MyVSShellStub"

  • DefaultSearchPage
    Specifies the default Search page URL for the Web Browser window. For example, "DefaultSearchPage"="http://search.live.com"

  • DefaultUserFilesFolderRoot
    Specifies the user folder in My Documents. The default value is 'Visual Studio', which specifies the full path '%USERPROFILE%\My Documents\Visual Studio'. For example, "DefaultUserFilesFolderRoot"="MyVSShellStub"

  • DisableOutputWindow
    Indicates whether the isolated shell should treat the output window as disabled. VARIANT_TRUE means that the solution build manager will not try to output anything to the output window and 'Show Output window when build starts' will be hidden in the Options dialog box. The default value is VARIANT_FALSE. For example, "DisableOutputWindow"=dword:00000000

  • HideMiscellaneousFilesByDefault
    If true, the Miscellaneous Files project is hidden. The default value is false. For example, "HideMiscellaneousFilesByDefault"=dword:00000000

  • HideSolutionConcept
    If true, the custom tool uses the solution, but does not show it to the user. The default value is false. For example, "HideSolutionConcept"=dword:00000000

    注意

    This option can be referenced before main initialization occurs.

  • NewProjDlgInstalledTemplatesHdr
    Localized replacement name for the Visual Studio installed templates header in the Templates list in the New Project dialog box. This is either a string or a resource id that is loaded from GuidAppIDPackage UILibrary. For example, "NewProjDlgInstalledTemplatesHdr"="MyVSShellStub installed templates".

  • NewProjDlgSlnTreeNodeTitle
    Localized replacement name for the Visual Studio Solutions node in the Project Types tree in the New Project dialog box. This is either a string or a resource id that is loaded from GuidAppIDPackage UILibrary. For example, "NewProjDlgSlnTreeNodeTitle"="MyVSShellStub installed templates".

  • PredefinedAliasesString
    Specifies the pre-defined aliases for the custom tool. For example,

    "PredefinedAliasesString"=""

  • SolutionFileExt
    Specifies the solution file name extension. The default extension is "<vsshellstubname>.sln".For example, "SolutionFileExt"="MyVSShellStub_sln".

  • SolutionFileCreatorIdentifier
    Specifies the second line in the solution file. This property is used to determine the solution node double-click behavior. For example, "SolutionFileCreatorIdentifier"="MyVSShellStub Solution File, Format Version 10.00"

  • UserFilesSubFolderName
    Name of the folder that is used for custom tool-specific subfolders under '%USERPROFILE%\My Documents\Visual Studio'. For example, 'Visual Basic Express' for '%USERPROFILE%\My Documents\Visual Studio\Settings\Visual Basic Express'

  • UserOptsFileExt
    BSTR specifying the solution options file name extension. The default extension is "<vsshellstubname>.suo". For example, "UserOptsFileExt"=" MyVSShellStub_suo ".

The VSCT File

The isolated shell custom tool stub UI project, as written by the New Project wizard, contains a .vsct file that lets you easily include or exclude groups and individual commands. The following is an excerpt from the unmodified file.

<!-- <Define name="No_WindowListCommand"/> -->
<!-- <Define name="No_MoreWindowsCommand"/> -->
<!-- <Define name="No_PaneNextPaneCommand"/> -->
<!-- <Define name="No_PanePrevPaneCommand"/> -->

By default, most commands and command groups are included. To exclude a command or command group, just remove the HTML comments for that command or group.

For example, to make the next and previous pane commands disappear, make the following modifications to the .vsct file:

<!-- <Define name="No_WindowListCommand"/> -->
<!-- <Define name="No_MoreWindowsCommand"/> -->
<Define name="No_PaneNextPaneCommand"/><Define name="No_PanePrevPaneCommand"/>

For a more detailed example in which several of these customizations are highlighted, see Walkthrough: A Basic Isolated Shell Custom Tool.

See Also

Concepts

Visual Studio 2008 Shell

Visual Studio 2008 Shell Isolated Mode