176 votes

Compiler/exécuter un fichier source C# dans l'invite de commande

Comment compiler et exécuter un fichier .cs à partir d'une fenêtre d'invite de commande ?

160voto

Ash Points 31541

CSC.exe est le compilateur CSharp inclus dans le .NET Framework et peut être utilisé pour compiler à partir de l'invite de commande. La sortie peut être un exécutable ".exe", si vous utilisez "/target:exe", ou une DLL ; Si vous utilisez /target:library, CSC.exe se trouve dans le répertoire .NET Framework,

par exemple pour .NET 3.5, c:\windows\Microsoft.NET\Framework\v3.5\ .

Pour l'exécuter, ouvrez d'abord une invite de commande, cliquez sur "Démarrer", puis tapez cmd.exe .
Vous devrez alors vous rendre dans le répertoire qui contient vos fichiers sources.

Exécutez le compilateur C# comme ceci :

  c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe 
            /t:exe /out:MyApplication.exe MyApplication.cs  ...

(tous sur une seule ligne)

Si vous avez plus d'un module source à compiler, vous pouvez le mettre sur cette même ligne de commande. Si vous avez d'autres assemblages à référencer, utilisez /r:AssemblyName.dll .

Assurez-vous que vous avez une méthode statique Main() définie dans l'une de vos classes, qui servira de "point d'entrée".

Pour exécuter l'EXE résultant, tapez MyApplication suivi par <ENTER> en utilisant l'invite de commande.

Cet article sur MSDN donne plus de détails sur les options du compilateur en ligne de commande. Vous pouvez intégrer des ressources, définir des icônes, signer des assemblages - tout ce que vous pouvez faire dans Visual Studio.

Si Visual Studio est installé, dans le menu "Démarrer", sous "Outils Visual Studio", vous pouvez ouvrir une "invite de commande Visual Studio", qui configurera toutes les variables d'environnement et de chemin requises pour la compilation en ligne de commande.

Bien qu'il soit très pratique de savoir cela, vous devriez le combiner avec la connaissance d'une sorte d'outil de construction tel que NAnt , MSBuild , FinalBuilder etc. Ces outils fournissent un environnement de construction complet, et pas seulement le compilateur de base.

Sur un Mac

Sur un Mac, la syntaxe est similaire, seul le compilateur C sharp est simplement nommé csc :

$ csc /target:exe /out:MyApplication.exe MyApplication.cs ...

Puis pour l'exécuter :

$ mono MyApplication.exe

1 votes

Si je me souviens bien, vous ne pouvez compiler vers et exe que si vous avez une classe statique avec une méthode Main.

0 votes

De nos jours, le compilateur vous avertit si vous ne l'avez pas fait, mais c'est un bon point que je vais ajouter à la réponse, merci.

5 votes

C'est génial. J'avais besoin de compiler une petite application C# et je n'ai aucun intérêt à toucher à Visual Studio. Merci !

20voto

Aditya Garg Points 191

Une autre façon de compiler les programmes C# (sans utiliser Visual Studio ou sans l'avoir installé) est de créer une variable utilisateur dans les variables d'environnement, à savoir "PATH".

Copiez le chemin suivant dans cette variable :

" C:\Windows\Microsoft.NET\Framework\v4.0.30319 "

ou en fonction de la version .NET de votre PC.

Ainsi, vous ne devez pas mentionner le chemin complet à chaque fois que vous compilez un code. Il suffit d'utiliser

" C:\Users\UserName\Desktop >csc [options] filename.cs "

ou quel que soit le chemin de votre code.

Maintenant vous êtes prêt à partir.

16voto

Surendra Points 161

Vous pouvez compiler un programme C# :

c : > csc Hello.cs

Vous pouvez exécuter le programme

c : > Bonjour

1 votes

Que se passe-t-il si j'utilise des bibliothèques supplémentaires ? Je reçois des erreurs indiquant que les assemblages ne sont pas trouvés... Comment résoudre ce problème ?

0 votes

Il faut d'abord s'assurer que le chemin du compilateur se trouve dans les variables d'environnement.

0 votes

@NikasŽalias. Par exemple : csc Hello.cs -langversion:latest -reference:System.Net.Http.dll

11voto

DeepSpace101 Points 1973

Pour la dernière version, ouvrez d'abord une fenêtre Powershell, allez dans n'importe quel dossier (par ex. c:\projects\ ) et exécutez ce qui suit

# Get nuget.exe command line
wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe

# Download the C# Roslyn compiler (just a few megs, no need to 'install')
.\nuget.exe install Microsoft.Net.Compilers

# Compiler, meet code
.\Microsoft.Net.Compilers.1.3.2\tools\csc.exe .\HelloWorld.cs

# Run it
.\HelloWorld.exe    

Un exemple HelloWorld.cs

using System;

public class HelloWorld {
    public static void Main() 
    {
        Console.WriteLine("Hello world!");
    }
}

Vous pouvez également essayer le nouvel interpréteur C# ;)

.\Microsoft.Net.Compilers.1.3.2\tools\csi.exe
> Console.WriteLine("Hello world!");
Hello world!

8voto

Marc Gravell Points 482669

Bien qu'il soit certainement bon de savoir comment construire en ligne de commande, pour la plupart des travaux, il est plus facile d'utiliser un IDE. Le programme C# édition express est gratuit et très bon pour l'argent ;-p

Par ailleurs, des éléments comme hargneux peut être utilisé pour exécuter des fragments de code C#.

Enfin, notez que la ligne de commande est spécifique à l'implémentation ; pour MS, il s'agit de csc ; pour mono c'est gmcs et amis.... De même, pour exécuter : c'est juste "exename" pour la version MS, mais typiquement "mono exename" pour mono.

Enfin, de nombreux projets sont construits avec des outils de construction script ; MSBuild , NAnt etc.

3 votes

J'utilise l'IDE. Mais j'avais besoin de savoir. Je ne me sens pas bien de ne pas savoir ! Merci beaucoup pour votre réponse.

1 votes

+1 pour NAnt ! LINQPad est très bon pour expérimenter avec des fragments de code : linqpad.net

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X