¿Es posible configurar un proyecto .net con un evento de compilación posterior para ejecutar un script de powershell? Estoy usando esta secuencia de comandos para generar algunos archivos. También puedo pasar si se trata de una compilación de debug o release a script. Un ejemplo de esto sería genial.Post evento de compilación ejecutar powershell
Respuesta
Aquí es una ejemplo:
Antes que nada: debe tener en cuenta que PowerShell debe configurarse para ejecutar scripts. La siguiente línea permite PowerShell para ejecutar scripts:
Set-ExecutionPolicy RemoteSigned
mención especial aquí: si está ejecutando un sistema de 64 bits que tiene que tener cuidado de que 'devenv.exe' Visual Studio 2010 ejecutable es un exe de 32 bits, por lo que debe permitir que PowerShell 32 ejecute scripts.
Una vez aquí se puede ir en las propiedades del proyecto y configurar posterior acumulación como se muestra aquí bajo (lo siento en francés):
Por ejemplo:
Aquí es el archivo 'psbuild.ps1
', crea un 'test.txt
' en la ruta de destino con el nombre de configuración dentro. Pongo en el comentario de diferentes maneras para depurar la secuencia de comandos postbuild (cuadro de mensaje, sonido, mensaje en la salida)
param ([string]$config, [string]$target)
#[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
#[void][System.Windows.Forms.MessageBox]::Show("It works.")
#[Console]::Beep(600, 800)
#Write-Host 'coucou'
set-content $target -Value $config -Force
no tengo un ejemplo, pero aquí hay algunos enlaces que pueden ser útiles:
gracias por los enlaces útiles – Mark
en lugar de jugar con la configuración de todo el sistema y tener que diferenciar entre los entornos de 32 y 64 bits, una mucho más fácil y más fiable enfoque consiste en especificar el ExecutionPolicy
en la llamada a PowerShell, de la siguiente manera:
C:\Users\xyz>PowerShell -ExecutionPolicy Unrestricted
PS C:\Users\xyz> Get-ExecutionPolicy
Unrestricted
PS C:\Users\xyz> exit
C:\Users\xyz>PowerShell -ExecutionPolicy RemoteSigned
PS C:\Users\xyz> Get-ExecutionPolicy
RemoteSigned
Nota en el código anterior cómo llamar Get-ExecutionPolicy
le indica el modo actual. También tenga en cuenta cómo se especifica esta modalidad en la llamada a sí PowerShell, que se puede combinar con un nombre de archivo de secuencia de comandos:
contenidos test.ps1:
echo ('The current policy is ' + (Get-ExecutionPolicy)).ToString()
probar la llamada.PS1 con Unrestricted
política en un sistema que tiene las secuencias de comandos para minusválidos:
C:\Users\xyz>PowerShell -ExecutionPolicy Unrestricted -file test.ps1
The current policy is Unrestricted
También tenga en cuenta que la llamada anterior hace no requieren derechos de administrador, por lo que se puede llamar en Pre-Construcción de Visual Studio Paso o similar.
Antes de llamar a la escritura de potencia-shell desde Visual Studio, establezca la ExecutionPolicy a restricciones de la ventana de energía de concha como esto ...
Set-ExecutionPolicy -Scope CurrentUser;
ExecutionPolicy: unrestricted;
el guión de potencia de concha llamada de la siguiente manera ...
(sin necesidad de pasar ruta completa del archivo "powershell.exe")
powershell.exe $(SolutionDir)Setup.ps1 -SolutionDir $(SolutionDir) -ProjectPath $(ProjectPath)
continuación, en la secuencia de comandos, siempre se puede leer el parámetro como este ...
param([string]$SolutionDir,
[string]$ProjectPath);
#Write-Host ($SolutionDir +" Call this script with following aruments");
#Write-Host ($ProjectPath +" Call this script with following aruments");
comando Set-ExecutePolicy, Grupo temporal política de ejecución en virtud de la sesión actual. Si configura esto en powershell y ejecuta el comando de compilación posterior en vs, seguirá sin estar permitido. Así que establezca primero que ejecute su script ps1 como el siguiente
powershell -ExecutionPolicy Unrestricted $(ProjectDir)Deploy.ps1 -ProjectDir $(ProjectDir) -TargetPath $(TargetPath)
- 1. ¿Ejecutar scripts de PowerShell sin instalar PowerShell?
- 2. Cómo ejecutar un exe en un evento de compilación posterior
- 3. Copiar Directorio - Post Build Evento
- 4. El comando más fácil/más corto para ejecutar un script de PowerShell como un evento de compilación en Visual Studio
- 5. Parámetros de evento Pre y Post Build
- 6. Visual Studio: ¿Varios comandos post-compilación?
- 7. jQuery "post-clic" evento
- 8. Visual Studio: ejecutar el evento Post-Build del proyecto C++ incluso si el proyecto está actualizado
- 9. Evento de perfil de Powershell "al salir"?
- 10. ¿Cómo ejecutar sqlcmd desde powershell?
- 11. Ejecutar secuencia de comandos Powershell de Node.js
- 12. Cómo desencadenar post-compilación usando setuptools/distutils
- 13. Ejecutar scripts de PowerShell en PC remota
- 14. Ejecutar un script de PowerShell desde otro
- 15. ¿Cómo ejecutar un script de PowerShell?
- 16. PowerShell equivalente de HTTP POST rizo para transferencia de archivos
- 17. PowerShell HTTP Post REST API de autenticación básica
- 18. Compilación de Maven: Error al ejecutar javac
- 19. Ejecutar PowerShell-Script desde la aplicación C#
- 20. Ejecutar PowerShell como administrador desde C#
- 21. MSBuild'ing un proyecto con un post-evento construir xcopy
- 22. Desarrollo del plugin de post-compilación de Jenkins
- 23. ¿Cómo ejecutar MSBuild desde Powershell sin generar el proceso msbuild.exe?
- 24. Obtener el estado de compilación en el script post-build
- 25. ¿Cómo hacer una solicitud HTTP Post/GET en Powershell?
- 26. Cómo llamar a una función en otra secuencia de comandos de PowerShell al ejecutar la secuencia de comandos de PowerShell con 'Ejecutar con PowerShell'
- 27. Compilación de nuevo tipo en PowerShell v2 - Cookie Aware WebClient
- 28. ejecutar pruebas en mstest sin compilación/construcción
- 29. Cómo crear un evento personalizado de limpieza (post-limpieza) en Visual Studio 2008?
- 30. ¿Podemos ejecutar un archivo .bat en la línea de comandos de evento de compilación posterior en Visual Studio?
¡Guau, esa fue realmente una respuesta! :) –
Buena respuesta. Solo agregaría que no debe establecer la política de ejecución para que no sea restringida, sino para crear una firma remota en su lugar. Sin restricciones permite ejecutar cualquier script, mientras que remotesigned requiere que los scripts descargados se firmen con una clave de confianza. – beefarino
Hum, ¿realiza una prueba para descargar un archivo .PS1 en una unidad Fat32 o utiliza el FTP básico de cmdline para descargar un archivo .PS1 con "remotesigned"? ¿no es una especie de "seguridad humeante"? – JPBlanc