2010-05-28 19 views
7

que estoy haciendo un poco de secuencias de comandos y me encuentro con algún más poder sería bueno. Al igual que la capacidad de seguir intentando eliminar un archivo con un retraso de 1 segundo Y tenerlo portátil. Pasé un tiempo hoy traduciendo un script bat para bash. Sé que puedo usar php o python, pero ESTOY MUY PREFERENTE en la comprobación del tiempo estático/de compilación.¿La fuente de C# se ejecuta como un script?

¿Hay una manera de ejecutar código C# como un guión? Siempre que pueda editar la fuente rápidamente (como en un bloc de notas) y ejecutarla simplemente, entonces estaré contento.

Espero que no tenga que crear una extensión personalizada y escribir una aplicación para compilar y ejecutar dinámicamente la secuencia de comandos (sé que la fuente compilará .js en algún lugar ...). ¿Alguien sabe de una solución?

+3

Hay PowerShell si desea acceder a la biblioteca .NET (así como un montón de commandlets). F # también tiene un modo interactivo que le dará acceso a bibliotecas .NET desde una consola. Cualquiera de estos parece una solución más directa que la compilación de C# sobre la marcha. – R0MANARMY

+0

No estoy seguro de seguir su pregunta. Desea poder "editar la fuente rápidamente y ejecutarla", pero "prefiere la comprobación del tiempo estático/de compilación". ¿Desea un * idioma * interpretado * o uno * compilado *? –

+0

puede usar csscript o linqpad como se haya respondido. Yo uso csscript para cada lote complejo – asakura89

Respuesta

6
> copy con cs.bat 
csc -o OUTPUT.exe %1 
OUTPUT.exe 
del OUTPUT.exe 
^Z 
> cs somefile.cs 

Aquí es una mejor versión de un archivo por lotes:

@echo off 
echo using System; class P { static void Main() { > foo.cs 
type %1 >> foo.cs 
echo }} >> foo.cs 
csc /nologo /out:foo.exe foo.cs 
del foo.cs 
foo.exe 
del foo.exe 

Por lo que han llamado algún archivo foo.txt:

Console.WriteLine("Hello world"); 

Invóquelo gustan:

cs.bat foo.txt 
+1

Esa es una solución realmente genial. –

+0

Podría hacer esto si me canso de escribir espacios de nombres o si tengo ganas de tener funciones integradas. –

+1

@leppie gracias por esto, he utilizado el código como base para un archivo por lotes mano de mi propia: https://gist.github.com/3018417 – travis

3

Mono tiene CsharpRepl que es un shell interactivo para C#

1

Hay una capa desarrollada por los desarrolladores de proyectos mono nombrar CsharpRepl. Nunca lo intenté, pero parece muy interesante.

2

Cada vez que necesito para ejecutar un pequeño fragmento de realizar algo en C# que solo use LinqPad.

Tal vez incluye un poco de mucho para los scripts simplemente pequeñas pero es mejor hacer un nuevo proyecto de consola cada vez.

Cuestiones relacionadas