2012-02-17 16 views
11

Quiero usar F # para algunas tareas muy básicas para las cuales utilicé previamente archivos por lotes. Puedo asociar archivos fsx con fsi.exe y ejecutarlo simplemente haciendo doble clic en ellos. Eso es genial hasta ahora.¿Puedo ejecutar archivos fsx desde Visual Studio sin configurar un proyecto?

Sin embargo, a veces es posible que desee profundizar en el código y depurar las cosas. Cuando abro el archivo fsx en Visual Studio, no puedo ejecutarlo y tampoco puedo seleccionar las líneas y usar "Enviar a interactivo".

Me parece que esos comandos solo funcionan si configura un proyecto F # completo. Eso parece ser engorroso (como un reemplazo de archivo por lotes). Me pregunto cuál es el enfoque correcto. Quiero tener mi pastel y comerlo! Quiero un archivo simple que pueda cambiar rápidamente, pero también quiero la capacidad de utilizar el análisis de cosas con Visual Studio a pedido.

ACTUALIZACIÓN Me acabo de descubrir que puede abrir la consola interactiva en "Ver \ Otras ventanas \ F # interactivo" y después de que usted tiene el comando "Enviar a Interactivo".

todavía estoy carece de la capacidad para ejecutar el código y establecer puntos de interrupción, aunque ..

+0

No, no puede depurar el código sin un proyecto. – ildjarn

+0

Entonces, para las tareas de scripting básicas que usan la consola interactiva F #, ¿cuál es el mejor soporte que se puede obtener? – Christoph

+1

BTW: El comando "Enviar a Interactivo" también debe asociarse con Alt + Intro (a menos que tengas Resharper que anula eso, creo). –

Respuesta

17

Como ya descubierto, no es necesario para crear proyecto para utilizar la consola F # interactivo.

Creo que funciones como la depuración son mucho menos importantes cuando usa F # para desarrollo interactivo (o scripting), porque puede evaluar el código paso a paso para analizar su comportamiento simplemente enviando comandos individuales a FSI . Así que no siento la necesidad de depurar en F # Interactive muy a menudo.

Aunque esta no es realmente una característica admitida, puede depurar código en un archivo de script cuando se usa solo F # Interactive. El truco consiste en conectar el depurador al proceso fsi.exe que se ejecuta detrás de F # Interactive.

Simplemente vaya a "Depurar" -> "Adjuntar al proceso" y luego seleccione "fsi.exe". Entonces debería poder colocar los puntos de frenado en el archivo de script fsx y el código que se ejecuta en F # Interactive se romperá. Como dije, esto no es realmente compatible, pero generalmente funciona bien para código en funciones. No encuentro esto tan útil a menudo, pero puede ser útil de vez en cuando.

+0

Ah sí, eso debería funcionar. Supongo que uno necesita colocar Console.ReadLine al principio para mantener la evaluación hasta que el depurador esté conectado. Podría estar bien a veces donde uno realmente necesita depurar. – Christoph

+0

@Christoph Puede adjuntar el depurador, colocar el punto de interrupción y * luego * enviar el código a F # Interactivo (o escribir el código como una función y ejecutar la función después de adjuntar el punto de interrupción). 'ReadLine' desafortunadamente no funciona en la consola F # en VS. –

+0

Ah, primero pensé que el proceso FSI.exe era de corta duración, pero se mantiene activo siempre que la ventana interactiva se mantenga abierta. Por otro lado, parecía como si el depurador estuviera limitado al depurar un archivo fsx de esta manera. No pude explorar los valores de las variables locales alrededor del punto de corte cuando lo intenté de esta manera. ¿Me estoy perdiendo de algo? – Christoph

Cuestiones relacionadas