This is how I was able to step-through install.ps1 using PowerShell ISE:
To be able to step through execution of the install script using PowerShell ISE follow these steps:
Enable execution of assemblies built with .Net 4
Either
C:\Windows\System32\WindowsPowerShell\v1.0
Or
C:\Windows\SysWOW64\WindowsPowerShell\v1.0
Depending on which version of PS you're using
If files are not there create them
Either
C:\Windows\System32\WindowsPowerShell\v1.0
Or
C:\Windows\SysWOW64\WindowsPowerShell\v1.0
Depending on which version of PS you're using
If config files are not there create them
powershell.exe.config:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
powershell_ise.exe.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
To be able to run PowerShell scripts included with a NuGet package the execution
policy will need to be changed:
Set-ExecutionPolicy RemoteSigned -Scope Process
Copy install.ps1 that you want to debug and modify it's contents as follows:
delete the parameters block
param(
[Parameter(Mandatory=$true)] [string] $installPath,
[Parameter(Mandatory=$true)] [string] $toolsPath,
[Parameter(Mandatory=$true)] $package,
[Parameter(Mandatory=$true)] $project
)
import a module which allows to use nuget cmdlets outside of the VS host process
Download http://community.sharpdevelop.net/blogs/mattward/NuGet/NuGetOutsideVisualStudio.zip
Extract contents of the bin folder to some place and then import the PackageManagement.Cmdlets.dll
like so:
import-module "C:\dev\NuGetOutsideVisualStudio\bin\PackageManagement.Cmdlets.dll"
now you are able to set all the parameters manually like so:
$toolsPath="C:\dev\demo-solution\packages\X1.Registration.DbUpdate.0.4\tools"
$installPath="C:\dev\demo-solution\packages\X1.Registration.DbUpdate.0.4"
set-project DemoSolution.Logic C:\dev\demo-solution\DemoSolution.sln
$project = Get-Project -name DemoSolution.Logic
That still leaves $package object unset but I found that script doesn't really refer to that parameter
References:
http://community.sharpdevelop.net/blogs/mattward/archive/2011/06/12/InstallingNuGetPackagesOutsideVisualStudio.aspx