visual-studio-2010 - change - visual studio code powershell terminal
Use los comandos de NuGet powershell desde fuera de Visual Studio (3)
Intenté usar mi control de fuente favorito desde la consola de Package Manager en Visual Studio 2010. Me he enfrentado a problemas descritos en otro topic . Por ahora, la mejor respuesta es mover todo el material de la línea de comandos de Visual Studio a Powershell.
Pero en este caso los comandos de Visual Studio no funcionan. Por ejemplo, el más crucial: no puedo ejecutar el comando Update-Database
desde Entity Framework.
¿Es posible registrar de algún modo los comandos de Visual Studio específicos para el proyecto actual en Powershell? ¿O hacer que Powershell tome automáticamente el contexto actual del proyecto desde la subcarpeta de packages
?
Los comandos de NuGet PowerShell dependen de que se ejecuten desde Visual Studio, por lo que no funcionarán en el PowerShell normal que se ejecuta desde la línea de comandos.
Sin embargo, puede usar migrate.exe que se envía con el paquete EntityFramework NuGet y usarlo desde la línea de comando para actualizar su base de datos.
Como prototipo, armé una forma de utilizar los comandos de NuGet PowerShell desde la línea de comandos de PowerShell normal utilizando SharpDevelop . Lamentablemente, en este momento, el paquete EntityFramework NuGet no funciona con SharpDevelop.
Otro proyecto interesante es StudioShell que proporciona una nueva unidad DTE: dentro de Visual Studio, pero también se puede usar fuera de la línea de comandos. No creo que sea compatible con los comandos de NuGet PowerShell que se ejecutan desde la línea de comandos de PowerShell normal.
No estoy muy familiarizado con los cmdlets de Visual Studio, pero puede importar un módulo en su sesión de PowerShell utilizando Import-Module -Name <ModuleName>
. Puede enumerar los módulos de PowerShell disponibles (también conocidos como "instalados") utilizando `Get-Module -ListAvailable ''.
Supongo que los cmdlets de Visual Studio están contenidos con su propio módulo de PowerShell, pero es muy posible que no esté "instalado" en una de las ubicaciones estándar en $env:PSModulePath
. Si este es el caso, puede que necesite ubicar el directorio del módulo e importar el archivo .psd1 o .psm1 directamente, y pasarlo a: Import-Module -Name <FullPathToModuleFile>
.
Como ejemplo de lo anterior, tome nota de dónde se encuentra el módulo de Windows Azure PowerShell: http://trevorsullivan.net/2012/06/07/introducing-microsofts-official-windows-azure-powershell-module/
Está en el directorio de Archivos de programa, y no está disponible inmediatamente para PowerShell, a menos que importe el módulo desde su ruta totalmente calificada (el archivo de manifiesto del módulo .psd1).
Espero que esto ayude.
Puedo encontrar el archivo NuGet.psd1 en:
C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/Extensions/5ttpefif.3mk/Modules/NuGet/NuGet.psd1.
Sin embargo, cuando intenta cargarlo:
PS> Import-Module $pathToNuGetPsd1 -Force -NoClobber -Scope Global
Import-Module : The name of the current Windows PowerShell host is: ''ConsoleHost''.
The module ''C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/
Extensions/5ttpefif.3mk/Modules/NuGet/NuGet.psd1'' requires the following Windows
PowerShell host: ''Package Manager Host''.
Creo que no tenemos suerte. Tiene que ejecutarse desde el Host del Administrador de paquetes y requiere cosas de Visual Studio tal como lo establece Matt.
Para resolver mi problema usé Chocolatey para instalar NuGet.CommandLine y luego usé NuGet.bat para hacer lo que necesitaba. Es un poco más de trabajo y puede que no funcione en todos los casos, dependiendo de lo que esté tratando de hacer.
Chocolatey: https://github.com/chocolatey/chocolatey/wiki/Installation
NuGet.CommandLine:
PS> cinst NuGet.CommandLine