2009-05-30 16 views
12

Vorrei scrivere semplici script in C#. Roba normalmente utilizzerei i file .bat o 4NT .btm per. Copia di file, analisi del testo, richiesta di input dell'utente e così via. Abbastanza semplice, ma fare queste cose direttamente in un file batch è davvero difficile (senza eccezioni, ad esempio).Qual è un buon modo per scrivere script in batch in C#?

Ho familiarità con i wrapper "scripting" da riga di comando come AxScript, in modo tale da farmi parte del modo in cui ci sono. Quello che mi manca è il facile framework di manipolazione dei file. Voglio essere in grado di fare cd (".."), copiare (srcFile, destFile) tipo funzionalità.

strumenti che ho provato:

  • NANT, che usiamo nel nostro processo di generazione. Non è un buon strumento di scripting. Sintassi XML incredibilmente prolissa e per aggiungere una semplice funzione è necessario scrivere un assembly di estensione. Non posso farlo in linea.

  • PowerShell. Sembra fantastico, ma non sono stato in grado di passare a questo come il mio guscio principale. Troppe differenze da 4NT. Qualunque cosa io faccia, deve essere eseguita da un normale prompt dei comandi e non richiede una shell speciale per eseguirla. PowerShell può essere utilizzato come script executor?

  • Perl/Python/Ruby. Odio davvero imparare un linguaggio e una struttura completamente nuovi solo per fare operazioni su file batch. Non sono stato in grado di dedicare il tempo che ho bisogno di fare questo. Inoltre, siamo un negozio .NET al 99% per la nostra toolchain e voglio davvero sfruttare la nostra esperienza e base di codice esistente.

Esistono framework che tentano di risolvere questo problema di "creare un file batch in C#" che è stato utilizzato?

Voglio la potenza di C# /. NET con la funzionalità del tipo di modalità immediata di un tipico linguaggio di shell cmd.exe. Sono solo nel volere qualcosa di simile?

+1

È possibile eseguire script in PowerShell e fornisce tutte le API di .NET Framework desiderate. Sfortunatamente ha una curva di apprendimento non banale. – Bruce

risposta

26

vorrei provare a superare l'ansia PowerShell perché è il guscio del futuro. Tutto il software che esce da Microsoft lo sta utilizzando come interfaccia di gestione e in particolare la versione 2.0 è ridicolmente utile.

Sono uno sviluppatore C# per la maggior parte del tempo, ma PowerShell ha risolto l'intero problema "WindowsApplication42" dei progetti temporanei che si accumulano. PowerShell consente l'accesso completo al framework .NET in un guscio di riga di comando quindi, anche se non si sa come fare qualcosa in PowerShell, molto probabilmente sa come farlo in .NET.

+1

ben detto e totalmente d'accordo. –

+1

+1 su Powershell 2.0 è così utile. L'ISE incluso vale la pena da solo. –

+0

Venduto. La tua risposta e il blog di John Robbins mi hanno finalmente convinto. :) http://www.wintellect.com/cs/blogs/jrobbins/archive/2008/02/17/eight-weeks-of-powershell.aspx – scobi

3

IronPython e IronRuby do consentono di sfruttare tutta la tua "esperienza e base di codici .NET" (non rispondono tuttavia alle tue obiezioni all'apprendimento di nuove lingue).

2

Se hai qualche secchione, puoi sempre provare cygwin.

Ricordo anche che Python è stato originariamente inteso come un langauge "colla". Se hai usato il già citato IronPython, è abbastanza facile legare le classi C# pre-scritte.

+0

Bash o una di quelle shell su Windows è davvero difficile. Ho provato molte volte e continuo a scoparmi sul/vs. \ problema. :(Quindi sembra che IronPython e Powershell siano le migliori opzioni fino ad ora – scobi

1

Se si associa a MS, PowerShell è sicuramente la strada da percorrere. Ma non mi piace molto.

Io personalmente uso di più lo script MSBuild e vorrei vedere Mono C# Shell un giorno per Windows.

+0

Che cos'è lo "script MSBuild"? Intendi solo il materiale XML? Perché è super dettagliato, difficile da debugare fuori da printf-debugging, difficile da estendere. .. Ma grazie per il riferimento a Mono C# Shell! Non ho nemmeno pensato di controllare Mono ma ha senso che abbiano qualcosa di simile.Il gui apparentemente non funzionerà su Windows ma la versione da linea di comando dovrebbe essere totalmente portatile, non risolverà il problema che ho in questa domanda (script batch) ma sembra davvero utile in generale. Vado a controllare, grazie ancora! – scobi

+0

Non ho bisogno di un debugger enorme per MSBuild script, quindi ho scelto questo, http://blogs.msdn.com/parthopdas/archive/2007/12/01/visual-debugger-for-msbuild-projects.aspx –

1

Penso che CS-Script potrebbe essere la soluzione ideale per voi.

Problemi correlati