¿Puede la ventana interactiva C # interactuar con mi código?

161

En Visual Studio 2015 o posterior, puedo abrir la 'ventana interactiva C #' y ejecutar el código:

> 5 + 3
8

Eso es lindo Ahora, ¿cómo puedo interactuar con mi código, mis clases? Supongamos que tengo un proyecto abierto.

> new Cog()
(1,5): error CS0246: The type or namespace name 'Cog' could not be found (are you missing a using directive or an assembly reference?)
Coronel Panic
fuente
Roslyn no es una ventana interactiva. Es la API del compilador .NET. ¿Estás seguro de no perderte las cosas?
Tigran
3
Esta es una característica enviada con Roslyn blogs.msdn.com/b/csharpfaq/archive/2012/01/30/…
Coronel Panic
Siempre uso la ventana Inmediato estándar para esto, también funciona con sus propios tipos.
Polyfun
2
¿Qué es la 'ventana inmediata estándar'?
Coronel Panic
@MattHickford Vea mi respuesta actualizada para más información
perezoso

Respuestas:

221

Cuando se usa Visual Studio 2015:

Puede abrir la ventana interactiva navegando a Vistas> Otras ventanas> C # interactivo ,

Luego, simplemente haga clic derecho en su proyecto y ejecute Initialize Interactive with Project desde el menú contextual.


Para versiones anteriores:

Para usar la ventana interactiva de C # con su código, asegúrese de compilar primero su código, luego agregue una referencia al ensamblaje resultante con el #rcomando de la siguiente manera:

Símbolo del sistema C #


También puede usar la Ventana Inmediata para interactuar con su código, así:

Ventana inmediata

perezoso
fuente
1
Gracias. Me gusta más la ventana interactiva C #. La ventana inmediata es hostil, no hay autocompletado. Console.WriteLine("hey") The name 'Console' does not exist in the current context System.Console.WriteLine("hey") Expression has been evaluated and has no value
Coronel Panic
-1 la pregunta es sobre el uso de la nueva C # REPL (ventana interactiva) que forma parte de roslyn. Echa un vistazo a los videos c9 de Don Syme donde usa la ventana interactiva F # mientras se desarrolla. Buen material. channel9.msdn.com/Series/…
John Dhom el
25
@JohnDhom ¿Por qué el voto negativo? Mis respuestas muestran totalmente cómo interactuar con su propio código a través de la ventana interactiva de C # (incluso hay una captura de pantalla que lo muestra).
pereza
8
En los proyectos .Net Core, el elemento del menú contextual no aparece, por lo que se requiere el método #r. Esta respuesta es perfecta para eso.
Ryan
2
Quiero agregar una pista más útil: si desea usar algunas cosas de tiempo de ejecución, puede agregar fácilmente esta directiva:#r "System.Runtime"
mostafa8026
70

Puedes usar clases de tu propio proyecto.
Simplemente haga clic derecho en su solución y seleccione "Restablecer interactivo del proyecto".

Si necesita más información, aquí está la fuente:
Uso de la ventana interactiva C # que viene con Roslyn - Parte 2

Botz3000
fuente
1
Gracias, eso suena bien. Por desgracia, no funciona como se describe: cualquier proyecto en el que lo intente, aparece una alerta de error que dice 'nombre de ensamblado no válido'. Frustrantemente, no explica de qué asamblea está hablando. Supongo que el software está roto.
Coronel Panic
@MattHickford: ¿Qué tipo de proyecto es el proyecto? No hemos realizado muchas pruebas más allá de simples ConsoleApplications y ClassLibraries.
Kevin Pilch
Gracias por preguntarle a Kevin. Acabo de intentar 'restablecer interactivo desde el proyecto' en algunos proyectos más pequeños, funcionó correctamente. Los proyectos para los que no funciona de manera confiable son bibliotecas y aplicaciones más complicadas con muchas referencias.
Coronel Panic
25
Nada de esto se aplica a VS 2015 nunca más. El comando del menú contextual desapareció y #rno encuentra los ensamblados de mi proyecto. ¿Algunas ideas?
ygoe
18
En VS 2015 Update 3, hay un 'Inicializar interactivo con proyecto' al hacer clic derecho en un proyecto en la solución (en el Explorador de soluciones).
Andrei Pana
44

Solo una actualización de la respuesta @ Botz3000.

El comando que desea buscar ahora se llama "Inicializar interactivo con proyecto"

ingrese la descripción de la imagen aquí

También vale la pena señalar que no podría encontrar este comando si mi ventana interactiva de C # no fuera visible.

Luke Hammer
fuente
11
No, no es. Lo tengo exactamente en el mismo lugar que señala la captura de pantalla.
Tom
3
@ Tom parece funcionar o no según el tipo de proyecto con el que está trabajando. ¿Cuál era el tipo de proyecto con el que estaba trabajando cuando lo encontró?
Luke Hammer el
@WizardHammer Creo Class Library
Tom
10
Estoy tratando de hacer que esto funcione con una biblioteca NetStandard y la opción no está allí en el menú contextual
ChadT
11

Totalmente de acuerdo "Inicializar interactivo con el proyecto" es genial.

Mi enfoque es insertar clases en una biblioteca y usar // css_reference en el script C # o #r en la ventana interactiva C #

Por ejemplo:

#r "D:\\dev\\DbHMonData\\LoadH2Stats\\bin\\Debug\\DbHMonStats.dll"
using DbHMonStats;
beloblotskiy
fuente