Open a Solution from the Package Manager Console

0

I'm trying to automate the process of opening a solution from source control.

I have VS12 open, but no solution or project open. Is it possible to change directories and then open a solution from the Package Manager Console?

(This is kind of beside the point, but in case there is a better way overall to do this) I'm trying to script this so that a powershell module installed via nuget could be run:

PM> Get-MyProject 'SomeName'

The module would then from pwd get the latest source cd into it and open the solution. My module can already get the source, but I'm not able to figure out how to open the solution in powershell. It seems like $dte should be able to do it, but I tried:

PM> $dte.Solution.Open('NugetTest.sln')

I get back the error

Exception calling "Open" with "1" argument(s): " could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND))" At line:1 char:1 + $dte.Solution.Open('NugetTest.sln') + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : COMException

powershell
nuget
asked on Stack Overflow Feb 22, 2013 by BigTundra

1 Answer

1

The default directory for the package manager console (unless you have defined a profile where you change it) is %userprofile%. Probably not the place where your solution sits. If you write a powershell script and place it in your solution directory, then execute it from the Power Shell Console, you can get the path of your solution doing this:

$path = Split-Path -parent $MyInvocation.MyCommand.Path

You can create a solution like this:

$solution = $dte.Solution
$solution.Create("C:\Temp", "MySolution.sln")

The first argument indicates the directory where you want to create the solution, the second one is the name of the solution itself.

To open an existing solution:

$solution = $dte.Solution
$solution.Open("<path to your solution>")

If it doesn't work, your path is probably incorrect.

answered on Stack Overflow Feb 23, 2013 by David Brabant

User contributions licensed under CC BY-SA 3.0