在命令提示符中编译/执行C#源文件

Dra*_*orn 141 c# command-line compilation command-prompt

如何从命令提示符窗口编译和执行.cs文件?

Ash*_*Ash 132

CSC.exe是.NET Framework中包含的CSharp编译器,可用于从命令提示符进行编译.如果使用/ target:exe,则输出可以是可执行文件(.exe),如果使用/ target:library,则输出可以是DLL.CSC.exe位于.NET Framework目录中,例如.NET 3.5 , c:\windows\Microsoft.NET\Framework\v3.5\.

要运行它,首先打开命令提示符(单击开始...然后键入cmd.exe).然后,您可能必须cd到保存源文件的目录中.

像这样运行C#编译器:

  c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe 
            /t:exe /out:MyApplication.exe MyApplication.cs  ...
Run Code Online (Sandbox Code Playgroud)

(全部在一条线上)

如果要编译多个源模块,可以将其放在同一命令行中.如果要引用其他程序集,请使用/r:AssemblyName.dll.

确保在其中一个类中定义了一个静态Main()方法作为"入口点".

运行所得到的EXE,只需要输入MyApplication随后<ENTER>在命令提示.

MSDN上的这篇文章详细介绍了命令行编译器的选项.您可以嵌入资源,设置图标,签署程序集 - 您可以在Visual Studio中执行的所有操作.

如果安装了Visual Studio,则可以在"开始"菜单(在Visual Studio工具下)中打开"Visual Studio命令提示符",该命令将为命令行编译设置所有必需的环境和路径变量.

虽然知道这一点非常方便,但您应该将其与某些构建工具(如NAnt,MSBuild,FinalBuilder等)的知识相结合.这些工具提供了完整的构建环境,而不仅仅是基本的编译器.

在Mac上

在Mac上,语法类似,只有C sharp Compiler命名为csc:

$ csc /target:exe /out:MyApplication.exe MyApplication.cs ...
Run Code Online (Sandbox Code Playgroud)

然后运行它:

$ mono MyApplication.exe
Run Code Online (Sandbox Code Playgroud)

  • 这太棒了.需要编译一个小的C#应用​​程序,并没有兴趣触摸Visual Studio.谢谢! (5认同)

小智 13

编译C#程序的另一种方法(不使用Visual Studio或未安装它) 是在环境变量中创建用户变量,即"PATH".

在此变量中复制以下路径:

"C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319"

或者取决于您的PC具有哪种.NET.

因此,每次编译代码时都不必提及整个路径.简单地使用

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

或者代码的路径在哪里.

现在你很高兴.


小智 12

你可以编译一个C#程序:

c:> csc Hello.cs

您可以运行该程序

c:>你好

  • 如果我使用其他库怎么办?我收到找不到程序集的错误...如何解决此问题? (3认同)

Dee*_*101 11

对于最新版本,首先打开一个 Powershell 窗口,转到任何文件夹(例如c:\projects\)并运行以下命令

# 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    
Run Code Online (Sandbox Code Playgroud)

一个例子 HelloWorld.cs

using System;

public class HelloWorld {
    public static void Main() 
    {
        Console.WriteLine("Hello world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以尝试新的 C# 解释器;)

.\Microsoft.Net.Compilers.1.3.2\tools\csi.exe
> Console.WriteLine("Hello world!");
Hello world!
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 7

虽然知道如何在命令行构建是一件好事,但对于大多数工作来说,使用IDE可能更容易.C#express版本是免费的,非常适合钱;-p

或者,像snippy这样的东西可以用来运行C#代码的片段.

最后 - 注意命令行是特定于实现的; 对于MS,它是csc; 对于单声道,它是gmcs和朋友....同样,执行:它只是MS版本的"exename",但通常是单音的"mono exename".

最后,许多项目都是使用构建脚本工具构建的; MSBuild,NAnt

  • 我确实使用IDE.但我需要知道.只是感觉不对不知道!非常感谢您的回复. (3认同)

nul*_*eph 5

LinqPad 是测试一些 C# 代码的快速方法,而且它是免费的。


Vad*_*zim 5

以下是如何使用独立的C#7.0编译器安装MSBuild,该编译器不再捆绑在最新的.Net Framework 4.7中:

是否可以在没有Visual Studio的情况下安装C#编译器?

然后就跑

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn\csc.exe" MyApplication.cs

将单个源文件编译为可执行文件。

还要注意,.Net Core 在不预先配置项目的情况下不支持编译单个源文件