8

Tengo un conjunto de métodos de utilidad estáticos que incluyen pruebas unitarias. Pero me gustaría tener una forma más interactiva de emplear un ciclo de compilación de prueba -> fijación -> (REPL), como en Lisp o Smalltalk, donde se puede ejecutar el código de forma inmediata en modo interactivo. Intenté usar F # Interactive para probar estos métodos directamente desde el proyecto C# abierto en VS 2010, pero no conseguí que funcionara.Cómo probar funciones de C# de forma interactiva con F # Interactivo

Sé que tengo que cargar el conjunto (directiva #r), abra el espacio de nombres y luego puede llamar a los métodos (e inspeccionar el resultado). ¿Pero cómo lo hago dentro de "F # Interactive" en Visual Studio 2010? Sé que es posible con la ventana "Inmediato" disponible en modo de depuración, pero quiero hacerlo dentro de F # Interactivo en "modo de diseño", cuando estoy escribiendo el código.

+1

¿Qué no está funcionando? Parece que estás deletreando la respuesta correcta en la pregunta. – Brian

+0

Hola Brian! - Ay, no. Supongo que el problema es que la directiva #r no puede usar para cargar dlls arbitrarios con una ruta completa, sino solo los ensamblajes de GAC o dentro de las rutas de búsqueda. Así que llegué a la conclusión de que estoy haciendo algo completamente incorrecto, y debe haber otra forma de utilizar F # Interactive desde dentro del proyecto abierto. Debería ser más fácil, más ágil ... más interactivo que en la ventana Inmediato. – Nico

Respuesta

10

Debe incluir la ruta a su proyecto utilizando la directiva #I, entonces puede cargar su ensamblaje y usarlo. Escribí una aplicación simple de la consola C#, intenté esto y conseguí que funcionara.

using System; 

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      PrintMessage(); 
      Console.Write("Press any key to continue . . . "); 
      Console.ReadKey(true); 
      Console.WriteLine(); 
     } 

     public static void PrintMessage() 
     { 
      Console.WriteLine("MESSAGE!"); 
     } 
    } 
} 

Luego, en F # interactivo:

> #I "full path to debug directory";; 

--> Added 'full path to debug directory' to library include path 

> #r "ConsoleApplication1.exe";; 

--> Referenced 'full path to debug directory\ConsoleApplication1.exe' 

> open ConsoleApplication1;; 
> Program.PrintMessage();; 
MESSAGE! 
val it : unit =() 

Así que definitivamente las obras, sólo tiene que compilar sus proyectos en primer lugar. Solo recuerde reiniciar su sesión para liberar su montaje de antemano.

+1

¡Hola Jeff! Comprobaré tu solución lo antes posible. Finalmente, alguien tenía una pista ... Por desgracia, nadie en el equipo VS2010 quería insertar la codificación REPL con F #, hubiera sido tan valioso ... (+1) – Nico

+1

Prefijo la ruta completa con @, por lo que la barra invertida no será tratada como un personaje de escape, por ejemplo '#I @" c: \ users \ myself \ projects \ FizzBuzz \ bin \ x86 \ Debug \ ";;' –

Cuestiones relacionadas