2012-07-06 9 views
5

Tengo un conjunto de scripts F # (fsx) que uso para mis necesidades básicas de implementación. Simplemente hago clic con el botón derecho en ellos y digo "Ejecutar con F # interactivo"Cómo mantener abierto fsi.exe después de ejecutar

Sin embargo, a veces la secuencia de comandos falla y me gustaría mantener la consola interactiva ejecutándose. Hasta ahora no he descubierto una buena manera de lograr eso.

Intenté iniciar fsi.exe manualmente, pero ¿cómo puedo iniciar mi script desde allí?

Respuesta

9

Si es lo suficientemente hackish, es posible que desee agregar simplemente otro elemento de menú contextual del Explorador similar al Run with F# Interactive, pero manteniendo la ventana de la consola abierta después de que finalice la secuencia de comandos .fsx. A continuación se muestra el esquema de trabajo de la forma de lograr esto para Windows7/VS2012:

  • siendo administrador abierta regedit y encontrar la clave HKEY_CLASSES_ROOT\VisualStudio.fsx.11.0\shell
  • añadir nueva subclave con un nombre único, como openRunCmd, hacer (Default) valor de esta clave lo que quiera ver en el menú contextual, tal vez Run with Fsi in shell
  • por último, añadir subclave HKEY_CLASSES_ROOT\VisualStudio.fsx.11.0\shell\openRunCmd\command y establecer (Default) valor de esta subclave en la siguiente línea:

    c:\windows\system32\cmd.exe /Q /K %%USERPROFILE%%\fsx.bat "%1"

Ahora, cerca regedit, vaya a su directorio y crear allí un archivo por lotes fsx.bat con la siguiente línea:

"C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\Fsi.exe" --quiet --exec "%1" 

Después de estas modificaciones que sería capaz de hacer clic en cualquier .fsx script con el botón derecho del mouse, elija Run with Fsi in shell y mantenga la ventana del shell después de la terminación del script hasta que la cierre. Con algunos pequeños ajustes, el mismo enfoque funcionaría para VS2010.

Solo tenga cuidado de ajustar los detalles, si la configuración de su sistema difiere de los anteriores. ¡Buena suerte!

Actualización: Para aquellos que quieran probar esto en casa o en el trabajo, he publicado un recorrido detallado here.

+0

¡Guau! Esto suena totalmente increíble. Tendré que probarlo lo antes posible (probablemente el lunes) – Christoph

+0

He agregado un enlace a mi respuesta con un recorrido detallado. –

+0

Gracias por su esfuerzo que puso en esto. Yo duplicaría la votación si pudiera :) – Christoph

3
#load "myScipt.fsx";; 

debería funcionar, creo. Pero yo prefiero solo tener una ventana de consola separada (cmd.exe), desde la cual puedo ejecutar fsi myScipt.fsx y ver la salida.

0

He creado una ventana de acceso directo con

Objetivo:

cmd /k "C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\Fsi.exe" deploy.fsx 

Inicio en:

C:\FolderContaningFsxScript 

Esto mantiene la ventana abierta si el guión falla por lo que puedo ver ninguna errores de compilación . También mantiene la ventana abierta si la secuencia de comandos se ejecuta con éxito, lo que podría o no ser deseable.

Me resulta más fácil simplemente hacer clic en el acceso directo en lugar de hacer clic con el botón derecho> Ejecutar con F # interactivo. Creo que un archivo por lotes con el comando anterior también funcionaría.

Cuestiones relacionadas