2010-05-28 3 views
7

Je fais un peu de script et je trouve que plus de puissance serait bien. Comme la capacité de continuer à essayer de supprimer un fichier avec un délai de 1s ET l'avoir portable. J'ai passé un peu de temps aujourd'hui à traduire un script de chauve-souris à bash. Je sais que je peux utiliser php ou python mais j'ai TRES BEAUCOUP PREFER statique/compiler la vérification du temps.Créer une source C# en tant que script?

Existe-t-il un moyen d'exécuter du code C# en tant que script? Tant que je peux éditer la source rapidement (comme dans un bloc-notes) et l'exécuter simplement alors je serai heureux. J'espère que je ne dois pas créer un ext personnalisé et écrire une application pour compiler dynamiquement et exécuter le script (je sais avoir la source pour compiler quelque part ... .js ...). Est-ce que quelqu'un sait d'une solution?

+3

Il y a PowerShell si vous voulez accéder à la bibliothèque .NET (ainsi qu'à un tas de commandlets). F # a également un mode interactif qui vous donnera accès aux bibliothèques .NET à partir d'une console. L'une ou l'autre de ces solutions semble être plus simple que de compiler C# à la volée. – R0MANARMY

+0

Je ne suis pas sûr de suivre votre question. Vous voulez pouvoir "éditer la source rapidement et l'exécuter", mais vous "préférez la vérification statique/compilée". Voulez-vous une langue * interprétée * ou une * compilée *? –

+0

vous pouvez utiliser csscript ou linqpad comme réponse. J'utilise csscript pour chaque lot complexe – asakura89

Répondre

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

Voici une meilleure version d'un fichier batch:

@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 

Vous avez un certain fichier appelé foo.txt:

Console.WriteLine("Hello world"); 

invoquons il aime:

cs.bat foo.txt 
+1

C'est une solution vraiment cool. –

+0

Je pourrais très bien le faire si j'en ai marre d'écrire des espaces de noms ou si j'ai envie d'avoir intégré des fonctions. –

+1

@leppie merci pour cela, j'ai utilisé votre code comme base pour un fichier batch pratique de mon cru: https://gist.github.com/3018417 – travis

3

Mono a CsharpRepl qui est un shell interactif pour C#

1

Il y a un shell développé par les développeurs mono de projet Nom de CsharpRepl. Je n'ai jamais essayé, mais cela semble très intéressant.

2

Chaque fois que j'ai besoin d'exécuter un petit extrait pour effectuer quelque chose en C#, je lance LinqPad.

Peut-être cela inclut-il un peu trop pour les petits scripts, mais il vaut mieux faire un nouveau projet de console à chaque fois.

Questions connexes