2010-05-28 7 views
7

Ich mache ein wenig Scripting und ich finde irgendwann mehr Power wäre nett. Wie die Fähigkeit, weiterhin versuchen, eine Datei mit einer Verzögerung von 1 Sek. Zu löschen und es tragbar zu haben. Ich habe heute einige Zeit damit verbracht, ein Bat-Script in bash zu übersetzen. Ich weiß, dass ich PHP oder Python verwenden kann, aber ich SEHR VIEL PREFER statische/Kompilierzeitprüfung.Machen C# Quelle als Skript ausgeführt?

Gibt es eine Möglichkeit, C# -Code als Skript auszuführen? Solange ich die Quelle schnell bearbeiten kann (wie in einem Notizblock) und es einfach laufen lasse, werde ich glücklich sein.

Ich hoffe, ich muss nicht erstellen Sie eine benutzerdefinierte ext und eine App schreiben, um dynamisch kompilieren und führen Sie das Skript aus (ich weiß Quelle haben, .js irgendwo zu kompilieren ...). Kennt jemand eine Lösung?

+3

Es gibt PowerShell, wenn Sie auf die .NET-Bibliothek (sowie eine Reihe von Commandlets) zugreifen möchten. F # hat auch einen interaktiven Modus, der Ihnen Zugriff auf .NET-Bibliotheken von einer Konsole aus ermöglicht. Beides scheint eine einfachere Lösung zu sein, als C# on the fly zu kompilieren. – R0MANARMY

+0

Ich bin mir nicht sicher, ob ich deiner Frage folge. Sie möchten in der Lage sein, "die Quelle schnell zu bearbeiten und auszuführen", aber Sie "bevorzugen statische/Kompilierzeitprüfung". Möchten Sie eine * interpretierte * oder eine * kompilierte * Sprache? –

+0

können Sie entweder csscript oder linqpad als beantwortet verwenden. Ich benutze csscript für jede komplexe Charge – asakura89

Antwort

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

Hier ist eine bessere Version einer Batch-Datei:

@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 

So haben Sie einige Datei namens foo.txt:

Console.WriteLine("Hello world"); 

rufen Sie es mögen:

cs.bat foo.txt 
+1

Das ist eine wirklich coole Lösung. –

+0

Ich könnte das sehr gut machen, wenn ich es leid bin, Namespaces zu schreiben oder wenn ich Funktionen eingebaut habe. –

+1

@leppie danke dafür, ich habe Ihren Code als Basis für eine handliche Batch-Datei von mir verwendet: https://gist.github.com/3018417 – travis

1

Es ist ein Shell entwickelt von Monoprojektentwickler nennen CsharpRepl eine interaktive Shell ist. Ich habe es nie versucht, aber es scheint sehr interessant zu sein.

2

Immer wenn ich ein kleines Snippet ausführen muss, um etwas in C# durchzuführen, feuere ich einfach LinqPad.

Vielleicht enthält es ein bisschen zu viel für einfache kleine Skripte, aber es schlägt jedes Mal ein neues Konsolenprojekt vor.

Verwandte Themen