views:

64

answers:

2

In Visual Studio, nupack adds a power-shell window called the Package Manager Console. I am thinking that this would be a good place to run source control commands (I'm using Mercurial). However, the default working directory is my users folder, so I need to navigate to my code folder every time I load a new project.

I am wondering if there is a one-line command to set the working directory to the solution folder. e.g. does something like this exist?

cd $SolutionFolder

From the results of get-variable it doens't look like there is anything immediately available, but I've never used powershell before, so maybe there is a way of getting the solution folder?

+2  A: 

Try

$dte.Solution.FileName
Doug Finke
thanks, this is moving me in the right direction. I can now do `Split-Path -parent $dte.Solution.FileName` to get the folder. Now I need to work out how to set up the package manager console to have this available in a variable or command without having to type that in every time
Mark Heath
You can find the PowerConsole profile in this variable $PowerConsoleUserProfile. There you can setup functions etc to shortcut what you need to do.
Doug Finke
it seems to be $profile, but thanks I've managed to get it working now.
Mark Heath
A: 

Thanks to Doug for pointing me in the right direction. I've written up full instructions on my blog here:

http://mark-dot-net.blogspot.com/2010/10/change-to-solution-folder-in-package.html

The basic answer is that the following command will do it:

Split-Path -parent $dte.Solution.FileName | cd

To make it more readily available, you need to create a function in your "user profile" script file, the location of which is found in the $profile variable. You will need to create the file if it doesn't exist. Then add a function:

Function solutionFolder()
{
    Split-Path -parent $dte.Solution.FileName | cd
} 

Now, after loading a solution in VS2010, you can simply type:

solutionFolder

and the working folder will be changed.

Mark Heath