visual studio restaurar paquetes c# visual-studio powershell nuget
http://community.sharpdevelop.net/blogs/mattward/NuGet/NuGetOutsideVisualStudio.zip

c# - studio - paquetes nuget



Cómo depurar la secuencia de comandos install.ps1 del paquete NuGet (5)

Así fue como pude instalar install.ps1 usando PowerShell ISE:

Para poder ejecutar paso a paso la ejecución de la secuencia de comandos de instalación con PowerShell ISE, siga estos pasos: Habilite la ejecución de ensamblados creados con .Net 4

Ya sea

C: / Windows / System32 / WindowsPowerShell / v1.0 O

C: / Windows / SysWOW64 / WindowsPowerShell / v1.0

Dependiendo de la versión de PS que estés usando, si los archivos no están ahí, créalos

Ya sea C: / Windows / System32 / WindowsPowerShell / v1.0 o C: / Windows / SysWOW64 / WindowsPowerShell / v1.0

Dependiendo de la versión de PS que estés usando

Si los archivos de configuración no están allí créelos

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>

Para poder ejecutar scripts de PowerShell incluidos con un paquete NuGet, la política de ejecución deberá modificarse:

Set-ExecutionPolicy RemoteSigned -Scope Process

Copie install.ps1 que desea depurar y modifique su contenido de la siguiente manera:

eliminar el bloque de parámetros

param( [Parameter(Mandatory=$true)] [string] $installPath, [Parameter(Mandatory=$true)] [string] $toolsPath, [Parameter(Mandatory=$true)] $package, [Parameter(Mandatory=$true)] $project )

importar un módulo que permite usar nuget cmdlets fuera del proceso de host VS.

Descargue http://community.sharpdevelop.net/blogs/mattward/NuGet/NuGetOutsideVisualStudio.zip Extraiga el contenido de la carpeta bin en algún lugar y luego importe PackageManagement.Cmdlets.dll.

al igual que:

import-module "C:/dev/NuGetOutsideVisualStudio/bin/PackageManagement.Cmdlets.dll"

ahora puede configurar todos los parámetros manualmente de esta forma:

$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

Eso todavía deja el objeto $ package desarmado, pero encontré que el script realmente no se refiere a ese parámetro

Referencias: http://community.sharpdevelop.net/blogs/mattward/archive/2011/06/12/InstallingNuGetPackagesOutsideVisualStudio.aspx

De modo que podemos incluir scripts de instalación / desinstalación de powershell en un paquete NuGet. Lo intenté, pero mi install.ps1 no funciona. ¿Hay alguna posibilidad de descubrir por qué? Depuración, registro, algo?

Actualizar

Tenga en cuenta que el script se ejecuta como parte de un proceso de instalación del paquete Nuget. Puede ser muy específico de Nuget.


Ejecute sus secuencias de comandos a través de la consola del administrador de paquetes en VS (detalles en la consola en https://docs.nuget.org/ndocs/tools/package-manager-console ) y se escribirá cualquier error que se produzca en el camino. en rojo

Además, puede escribir información de tipo de rastreo de diagnóstico con Write-Host en la misma consola.


Puede llamar a Start-Transcript al comienzo del script de instalación y Stop-Transcript al final. Probablemente envolverías el código de instalación así:

try { $ErrorActionPreference = ''stop'' # stop on error Start-Transcript c:/a.txt ... } catch { write-host $_ } finally { Stop-Transcript }

También $ErrorActionPreference = ''inquire'' (en lugar de stop) podría funcionar. Sin embargo, no hay oportunidad de probarlo ahora. Ver http://tasteofpowershell.blogspot.com/2008/07/handling-errors-in-powershell.html


Quizás llego tarde a la fiesta, pero aquí hay una solución para depurar las secuencias de comandos específicas de NuGet, el paquete NuGetDebugTools . Su script Add-Debugger.ps1 agrega un Add-Debugger.ps1 simple y efectivo a la consola del administrador de paquetes NuGet.

El escenario de muestra:

  • iniciar Visual Studio
  • abra la consola NuGet y escriba comandos

    PM> Add-Debugger [-ReadHost] PM> Set-PSBreakpoint -Command init PM> Set-PSBreakpoint -Command install

(o establezca puntos de corte más específicos, consulte la help Set-PSBreakpoint )

  • abra una solución de Visual Studio o invoque Install-Package XYZ para ya abierto
  • el diálogo de entrada del depurador aparece en cualquier init.ps1 e install.ps1 invocado
  • tipo ? como entrada de depurador y mira lo que puedes hacer:

    s, StepInto Step to the next statement into functions, scripts, etc. v, StepOver Step to the next statement over functions, scripts, etc. o, StepOut Step out of the current function, script, etc. c, Continue Continue operation (also on empty input). q, Quit Stop operation and exit the debugger. ?, h Display this help message. r Display PowerShell command history. k Display call stack (Get-PSCallStack). <number> Show debug location in context of <number> lines. +<number> Set location context preference to <number> lines. <command> Invoke any PowerShell <command> and write its output.

  • escriba otro depurador y comandos de PowerShell y mire la salida en la consola NuGet

v1.4.0 - Nuevo interruptor ReadHost dice que use Read-Host para la entrada en lugar del cuadro de entrada de GUI predeterminado.


Use Set-PsDebug -trace 2 para ver qué está sucediendo.