2008-12-03 14 views
29

Me pregunto si hay algo así como una versión independiente de Visual Studios "Inmediate Window"? A veces solo quiero probar algunas cosas simples, como "DateTime.Parse (" blah ")" para ver si eso funciona. Pero cada vez que tengo que crear una nueva aplicación de consola, inserto mi código y lo pruebo.C# Console/CLI Interpreter?

La ventana Inmediato lamentablemente solo funciona cuando estoy depurando algo. ¿Podría PowerShell hacer eso? ¿Simplemente abra una CLI similar a lo que hace cmd.exe, permitiéndome ejecutar algún código C#?

+0

Me pregunto si sería escribir uno usando Reflection.Emit –

+0

Acaba de agregar la etiqueta REPL. – mackenir

+0

No sabía ese término, pero sí, eso es realmente lo que estoy buscando :) –

Respuesta

33

Linqpad - Lo uso todo el tiempo. http://www.linqpad.net/

No se deje engañar por el nombre, eso solo describe la motivación original, no su funcionalidad.

Acaba de lanzar una versión con la finalización de la declaración adecuada - eso es un complemento con cargo (la herramienta principal es gratis), pero una pequeña cantidad de dinero y bien vale la pena, creo.

+1

LINQPad fue fácilmente la mejor inversión que he hecho, más valiosa que R # o cualquier otra cosa. –

+0

LINQPad es la mejor manera que he encontrado para explorar bibliotecas o crear rápidamente un prototipo de solución. Autocompletar + Documentación en línea + Salida inmediata = Win. – Omar

+0

Consulte la respuesta de @Athari: "C# Interactive window and csi.exe" (+1) – SchLx

8

Bueno, esto no es una respuesta directa a su pregunta, pero usted podría mirar a esta herramienta:

Además, si quieres ver la IL produce, o similar, hay una herramienta que se conecta a Reflector, llamada Snippy, basada en la herramienta Snippy que Jon menciona en su propia respuesta más abajo.

Todos estos son muy agradables de usar.

4

A lo largo de las líneas de la respuesta de lassevk, tengo "Snippy". Esto fue desarrollado para C# en profundidad, y la IU es bastante basura, pero funciona, y le permite escribir miembros adicionales (métodos, clases anidadas, etc.) también, p.

public static void Foo() 
{ 
    Console.WriteLine("Hello"); 
} 
... 
Foo(); 

(El ... se utiliza contar Snippy "todo bajo pertenece aquí en el principal".)

2

También me parece que SharpDevelop es tan rápido y ligero que es la forma más fácil de azotar fuera un proyecto de prueba rápido.

7

Como sugiere, PowerShell puede hacer lo que quiera. Por ejemplo, para probar su DateTime.Parse, el siguiente chiste hará el truco:

PS C: \ Documents and Settings \ Dan>[System.DateTime] :: Parse ("bla bla")
Excepción que llama a "Parse" con "1" argumento (s): "La cadena no fue reconocida como un DateTime válido. Hay una palabra desconocida que comienza en el índice 0." En línea: 1 char: 25 + [Sistema.DateTime] :: Parse (< < < < "Bla")

PS C: \ Documents and Settings \ Dan>[System.DateTime] :: Parse ("1/2/3")

01 de febrero de de 2003 00:00:00

Tenga en cuenta que los usos anteriores, la versión actual de PowerShell (v1.0). La próxima versión de PowerShell le permitirá mezclar C# con los scripts de PowerShell más directamente. Para abrir el apetito, mira este screencast de 7 minutos "C# to PowerShell" por Doug Finke. ¡Muy impresionante!

+0

+1. Lo principal con lo que podría tener problemas aquí es que PowerShell no hace muy bien los métodos genéricos. – JohnL

1

Puede encontrar útil el Banco de pruebas de objetos. No es muy conocido, pero le permite crear instancias de clases, ejecutar métodos estáticos, etc. Puede ser útil para descubrir cómo usar API desconocidas o para depurar rápidamente sus propias clases y métodos, ahorrando la creación de un arnés de prueba para verificaciones simples.

Puede encontrar la documentación de MSDN aquí:

http://msdn.microsoft.com/en-us/library/c3775d98%28VS.80%29.aspx

+0

Encontré eso hace unos días "por accidente". En realidad es bastante útil, aunque no es realmente lo que estoy buscando, pero aún así +1 porque de hecho es una "Gema Oculta" de Visual Studio. –

1

Si usted podría esperar un tiempo .. parece que podría haber un equivalente C# del IRB de Ruby en el tiempo para C# 4.0 Anders H. Demostró una sesión de consola interactiva en la que podía escribir un código C# arbitrario y ver los resultados en su pieza 'Future of C#' en PDC 2008. Incluso podía sacar una Ventana WPF de ella y luego jugar con ella a través de la interfaz de la consola. Muy genial.

1

Uso LINQPad.

Nombre no obstante, se puede ejecutar cualquier código C# o VB, a partir de expresiones simples a clases enteras.

Además, puede visualizar gráficos de objetos enteros en los resultados.

Incluso puede agregar referencias a sus propios ensamblajes.

0

Si por casualidad usted conoce como Python y, a continuación, IronPython puede ser una buena alternativa. Viene con una consola REPL (de Python) (ipy.exe) donde puede importar y usar todos los tipos de .Net.

me resulta útil para probar a cabo pequeñas cosas, exactamente igual que DateTime.Parse("Blah").

Nota que en realidad no puede ejecutar código C#, pero si lo que quieres es el acceso a .Net, entonces es perfecto. Además, si instala el IronPython Tools for VS, puede iniciar una sesión REPL directamente en VS utilizando un atajo de teclado único (Alt + I) y dejarlo funcionando en una ventana acoplada para cuando lo necesite.

3

Acabamos de lanzar CShell con todas las funciones C# REPL IDE. Admite la finalización de código, los archivos de script, la adición de referencias y es realmente extensible.También planeamos agregar soporte NuGet pronto, lo que hará que sea muy rápido escribir algún código y ver cómo funciona.

http://cshell.net/

CShell screenshot

Nos encanta LINQPad pero no tiene un REPL, el código se ejecuta una vez y no se puede hacer nada más con los resultados a menos que modifique la secuencia de comandos y ejecutar todo el guión de nuevo. Esto es excelente, pero a veces, si desea una sensación aún más sólida, evaluar su código en un REPL es realmente agradable y conveniente.

9

Trate scriptcs, no está integrado en el IDE de VS pero sí permiten escribir y ejecución de C# en una ventana de script sin la necesidad de un proyecto compilador etc ...

+1

esto es realmente bueno. Se puede instalar fácilmente con chocolate, luego solo ejecutarlo desde powershell con "scriptcs" para ingresar al modo REPL – MorganTiley

11

C# interactivos ventanas y csi .exe REPL se añadieron a Visual Studio 2015 actualización 1:

La introducción interactivo

El Int La Ventana de Erasmo ha vuelto! El C# interactivo ventana vuelve en Visual Studio 2015 Actualización 1, junto con un par de otras golosinas interactivos:

  • C# interactivo. La ventana interactiva de C# es esencialmente un loop de lectura-evaluación-impresión (REPL) que le permite jugar y explorar con tecnologías .NET mientras aprovecha las características del editor como IntelliSense, coloreado de sintaxis, etc. Obtenga más información sobre cómo usar C# Interactivo en el Canal 9 o leyendo el tutorial de nuestros principiantes.

  • csi. Si no desea abrir Visual Studio para jugar con C# o ejecutar un archivo de script, puede acceder al motor interactivo desde el símbolo del sistema del desarrollador. Escriba csi /path/myScript.csx para ejecutar un archivo de script o escriba simplemente csi para colocar dentro de la línea de comando REPL.

  • API de scripting. Las API de scripting le dan la capacidad de ejecutar fragmentos de código C# en un entorno de ejecución creado por el host. Puede obtener más información sobre cómo crear su propio motor de script C# revisando nuestros ejemplos de código.

Ver What’s New in Visual Studio 2015 Update 1 for .NET Managed Languages.

Básicamente, ahora usted tiene:

  • IDE REPL - ventana de C# interactivo en VS
  • Guión intérprete - csi foo.csx de Dev Cmd Prompt
  • línea de
  • Comando REPL - csi de Dev Cmd Prompt
  • API de scripting
0

Las fuentes del proyecto Roslyn contienen un REPL llamado CSI (http://source.roslyn.io/#csi/Csi.cs). La clase Csi es actualmente interna pero con el proyecto "csi" (Roslyn.sln: Interactive/Hosts/csi) está disponible una aplicación de consola ejecutable que admite e. gramo. el comando #r para cargar un ensamblaje y #load para cargar y ejecutar archivos de guiones (inicie el csi y use #help).