StudioShell 1.6.0

dotnet add package StudioShell --version 1.6.0
NuGet\Install-Package StudioShell -Version 1.6.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StudioShell" Version="1.6.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StudioShell --version 1.6.0
#r "nuget: StudioShell, 1.6.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StudioShell as a Cake Addin
#addin nuget:?package=StudioShell&version=1.6.0

// Install StudioShell as a Cake Tool
#tool nuget:?package=StudioShell&version=1.6.0

PowerShell module that deeply integrates Visual Studio extensibility with your PowerShell session.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.6.0 4,149 1/28/2014 1,991 5/31/2013 1,247 5/28/2013
1.2.0 2,097 12/30/2011


   You are running version 1.6 of StudioShell.

   The changelog documents the changes placed in each release of
StudioShell.  Each item is identified by its codeplex work item
number(s) if available.

 Resolved Issues

 Added Features
   Added support for VS 2013.

 Resolved Issues
   55: Visual Studio version detection in nuget install script now uses product version
   of the environment command line.  

   55: Installer now checks for OLE object definitions in HKCR to verify existence
   of Visual Studio installations.

   Tab expansion works again for variable names.

   50: Error management and reporting has been revamped in several ways.  First,
   exceptions explicitly thrown from the console are now reported rather than silently
   disappearing.  Second, errors that occur during non-interactive use of the runspace,
   such as calculating the prompt or running a scriptblock as part of a menu item, no
   longer propagate out to the Visual Studio process as exceptions.

   You can now add a reference to a project by its name when the project is
   contained in a solution folder.

   The installer no longer assumes default install locations, and instead
   uses paths from the registry to locate prerequisites.

   Canceling a running pipeline (CTRL+SHIFT+C) doesn't require you to Tonya
   Harding the entire runspace anymore.    

   Fixed rename-item implementation to work against multiple matched path

Fixed CanGet property logic in ShellCodeProperty2.

Removed dependency on PostSharp; this allows StudioShell and PostSharp to be
successfully used in the same instance of Visual Studio.

Fixed initialization script errors related to stricter variable interpolation
rules introduces in PowerShell v3.
   Addressed several issues with command bars; in particular, comboboxes have
   been removed as a control option since you can't create them via automation
   Buttons are now the default itemtype for new-item when working in the
   commandbars path node.
   The default StudioShell prompt was updated to remove the PowerShell
   Provider Path preamble in v3 hosts.
   42: Massive changes to NuGet init.ps1 logic.  NuGet package now verifies
   the state of your Visual Studio session, as well as checking for installed
   versions of StudioShell before attempting a module install.
   New-Item in solution/projects no longer appends project file extension to
   project name.  This can cause the VS template mechanism to fail in some
   situations and seems to set off VS2012 in a big way.    
   26: Tab expansion behaves closer to the console standard.
   The StudioShell module no longer adds its internal Scripts folder to the
   path.  This was causing commands to be discovered as both functions of the
   module and script files, and generally mucking up the help for these
   script-based commands.
   MSI installer now modifies Visual Studio current user registry settings,
   rather than machine-wide settings.
   27: Importing into the ISE is now functional.

 Added Features
   51: Added intercept for unsupported console applications.  Attempting to
   run an known interactive console application from the StudioShell console
   will result in an error as it does in the ISE console.

   Added StudioShellVersion entry to existing psversiontable variable.    

   43: Add-in and build install support for VS 2012.

Support for PowerShell v3 hosts.
   Support for PowerShell v3 tab expansion mechanisms.       
   Invoke-Item now supported on commandbar buttons (menu items with actions,
   but not popups).  Note that an error is raised if the commandbar button
   is disabled when invoked; because of this, buttons linked to scriptblocks
   are not immediately invokable, since these buttons are disabled when the
   StudioShell runspace is unavailable (such as during a call to invoke-item).
   Cache templates are now listed in the dte:/templates hive.

   Added Pester unit tests to source hive.       
 Resolved Issues
The initial release of 1.3 contained a bug that broke the path topology
management mechanism, effectively leaving the following path nodes useless:

23: Project folders now support the new-item cmdlet properly.

  31: The exit command closes the console window but not reset the PowerShell
session.  A new menu command was added to reset the session.  This
command effectively associates a new PowerShell runspace with the
StudioShell console.

The reason the exit command doesn't reset the console session is
that there are many features of StudioShell that rely on the under-
lying PowerShell runspace backing the console.  E.g., solution

25, 32: The StudioShell console now supports multi-line statements and
nested prompting.  E.g., if you enter a command and a pipe, the
console will prompt you for the next pipeline command.

36: The NuGet initialization script would fail if the AddIns folder did not
exist.  Now the AddIn folder is explicitly created.

38: It was not possible to specify a path to an assembly file when adding
a reference to the dte:/solution/projects/.../references node.
PowerShell would interpret the file path as part of the item path.
The reference collection node was modified to accept an assembly
path or name in the new-item -value parameter.

 Added Features

 Resolved Issues
The user's home drive is no longer assumed to be the same drive on which
StudioShell is installed.  Previously scripts used the "home folder" ~
assuming it always referenced the user's home folder (a la the Linux
meaning of ~) which is typically c:\users\<username>.  If StudioShell is
installed on the C: drive, but the user's home drive is, say, H:, the
settings data and profile scripts would not be accessed properly, resulting
in strange behavior in the console.

The 'exit' command just hides the console; reinitializing the runspace
proved to cause unintented side-effects when the UI has been altered with
custom script commands.

Visual Studio command objects are now guaranteed to always have a name.  
Previously commands that didn't have name were unreferenceable, but would
appear in the list of items in the command path node.  This would disrupt
the console output and falsely show multiple containers under the command
node.  Nameless commands are now identified by their numeric ID value.

Formats are now defined and working for the following path nodes:
 * project templates
 * project item templates
 * tasks
 * errors
 * addins
 * fonts / color settings

10: The default console warning and error color selections are
readible (color on black background)

17: Slashes are normalized as backslashes (\) in PSDTE paths even though
forward slashes (/) are clearly superior.

In addition, the dte:/ drive name is no longer present in the
PSPath information returned by the provider.

For more information on this path issue see:

19: Variables are now tested for existence before attempting to
create them to avoid errors; e.g., the $dte variable is already
defined in the NuGet Package Manager Console, and attempting
to redefine the variable results in an error.

A list of variables that cannot be defined is still issued
in a debug message to the console, with one exception -
if the $dte variable already exists, it is assumed to be
the root DTE variable for the Visual Studio Shell and no
message is issued.

23: Project folders now support the ability to add new items.

24: Support for read-host is now properly implemented.  Both -prompt and
-assecurestring parameters behave as they do in the standard PowerShell

 Added Features    
The Cancel Executing Pipeline command actually works now.  At some
point while toying with NuGet support, I had disabled this command
functionality.  In addition, the pipeline monitoring backing the
command is now off of the main UI thread; this makes canceling pipes
that are leveraging UI-thread items (such as Visual Studio) more

   Accessing AddIns no longer crashes VisualStudio.  The AddIns node
now closes access to the AddIn.Instance property; accessing this
property apparantly causes Visual Studio to crash.  Don't know why.

Improved support for usage from NuGet.  All of the StudioShell PSDTE
functionality is available from the NuGet Package Manager Console once
you import the StudioShell module.  Previously, menu items and commands
added via the DTE drive would be created, but would never execute if
created from the package manager console.  

See and

Integrated NuGet Packaging with StudioShell build.  StudioShell can now
be installed via NuGet.  Search for the package named "StudioShell" in
the public NuGet package repository.  

Support for using the PSDTE provider outside of Visual Studio.  You can now
load the PSDTE provider in a standard PowerShell console and get access
to the DTE: drive without running Visual Studio explicitly.  

Support for this scenario should be considered beta; some aspects of
the DTE: drive behave differently outside of Visual Studio.  In
addition, the visualization cmdlets available in StudioShell do not work
from the console.

Support for SQL Server Management Studio (SSMS) installations.  SSMS support
is experimental at the moment.  Moreover, several key path nodes are not
supported by SSMS and are therefore not available on the DTE drive:

* the project hive cannot be manipulated because the SSMS object model
 does not support it.

* there is no code model implemented for T-SQL, and therefore there are
 no code model hives in the DTE drive in SSMS.

* it is very likely that other portions of the DTE drive are
 non-functional or at least unstable.
You have been warned, use with _extreme caution_.

 DTE Drive Path Topology Changes
Code Model Relocation

The code model is now isolated from project items.  In previous versions, the
code model was available as a hive beneath each particular project item:

dte:/solution/projects/<project name>/<item name>/codemodel

Project item properties were available in a peer of the code model node:

dte:/solution/projects/<project name>/<item name>/itemproperties

This path topology proved inefficient for working with project items.  The
code model hive is generally massive in comparison, making recursive
operations targeting the project items cumbersome and slow.  E.g.,:

ls dte:/solution/projects -recurse -include 'packages.config'

Moving the code model addresses this issue, and provides a cleaner
and simpler path topology.  Project items remain in the same location:

dte:/solution/projects/<project name>/<item name>/itemproperties

The code model hive is now available under the following node:

dte:/solution/codemodel/<project name>/<item name>/

The code model is still organized by project and file, which is necessary
to permit modifying operations to the code model.

Selected Items Reorganization

  Previously the SelectedItems path node listed currently selected code model
elements individually; in this release the SelectedItems node is expanded with
a new CodeModel container node that houses the currently selected code model

1.1 (private release)
 Resolved Issues
   7: clear-item is now supported in the default console

8: UI thread deadlocking has been addressed in all cases except nested

13: using shift-home and shift-end in default console selects from the
current position to start-of-input and end-of-input respectively.

14: tab completion now manages existing quotes and adds missing quotes
to paths as required

using 'exit' in the default studioshell console now releases the existing
runspace.  re-opening the console will create a new runspace initialized
to the default studioshell state.

 Added Features
   Added support for unregister-<SolutionModuleName> function in solution
modules.  This function will be invoked just before the module
is removed from the session.  The existing mechanism for catching
the unload event for the solution module proved too difficult for
the author to remember reliably:

$m = $MyInvocation.MyCommand.ScriptBlock.Module;
$m.OnRemove = {
# ...

This method still works of course, but you can now opt for the
simpler and more understandable:

function unregister-MySolutionModule

   Project item properties are now available in the DTE hive:
   ls dte:/solution/projects/MyProject/Program.cs/itemproperties

 Resolved Issues
1: Tab completion and history walking have been hardened in the console.

2,6: Solution Folders are now recognized as containers in the console.

5: Solution Modules are now unloaded automatically if the
"AutoManageSolutionProfiles" setting is enabled.

9: The PowerShell AllUsersCurrentHost is no longer loaded.  The
"LoadPowerShellProfiles" setting now only applies
to your Current User profile script located at

11: Data panes (visualizations) now reliably appear in VS2010.

12: The default console window now consumes all available client area of
the tool window at startup.

 Added Features
10: Project item properties are now avaialble in the path heirarchy.
See dte:/solution/projects/<project>/<file>/properties.

The locals and arguments nodes under the stack frame tree now add missing
quotes to strings when you attempt to set an expression value.

The default PowerShell module path is now added to the process environment
when StudioShell is started.
 Initial Release