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

209
您如何在命令提示符窗口中编译和执行 .cs 文件?

2
对于那些感兴趣的人:我已经编写了一个批处理文件 **CompileCS.cmd**,它允许您编译(并可选地运行)C#文件。它在内部使用csc.exe,并调用本地PC上找到的最新版本。您可以在StackOverflow上找到批处理程序'CompileCS'的链接,我在那里回答了如何获取最近安装的csc.exe。 - Matt
17个回答

179

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。然后您可能需要进入包含源文件的目录。

像这样运行C#编译器:

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

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

确保在您的类中定义了一个静态Main()方法,作为“入口点”。

要运行结果为EXE的文件,请在命令提示符后面输入MyApplication,然后按下<ENTER>

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

如果已安装Visual Studio,则可以在“开始菜单”下的Visual Studio工具下打开“Visual Studio命令提示符”,该提示符将设置所有所需的环境和路径变量以进行命令行编译。

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

在Mac上

在Mac上,语法类似,只是C#编译器的名称为csc

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

然后运行它:
$ mono MyApplication.exe

1
如果我没记错的话,只有在拥有一个静态类和一个Main方法的情况下,你才能将代码编译成可执行文件(exe)。 - cjk
编译器现在会警告你,如果你还没有做到这一点,但是很好的建议,我会把它加入到答案中,谢谢。 - Ash
7
太棒了!我需要编译一个小的C#应用程序,但不想使用Visual Studio。谢谢! - ColinM
1
在Win10中,我在這裡找到了:C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe - TrakJohnson

22

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

将以下路径复制到此变量中:

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

或者根据您的PC所拥有的.NET版本而定。

这样,您每次编译代码时就不必提及整个路径。只需使用

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

或者您代码的路径所在的地方。

现在您可以开始使用了。


19
你可以编译 C# 程序: c: > csc Hello.cs 你可以运行程序: c: > Hello

3
如果我使用额外的库会怎样?我得到了找不到程序集的错误...如何解决这个问题? - Nikas Žalias
你需要先确保编译器的路径已经添加到环境变量中。 - Dame Lyngdoh
@NikasŽalias。例如,csc Hello.cs -langversion:latest -reference:System.Net.Http.dll - Alex Nolasco

12

获取最新版,请先打开 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    

一个示例 HelloWorld.cs

using System;

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

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

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

非常有趣,谢谢! - SinaMobasheri

8
尽管在命令行中构建项目是一件好事,但对于大多数工作来说,使用集成开发环境(IDE)可能更容易。C#的Express版本是免费的,并且性价比很高 ;-p 另外,可以使用类似Snippy的工具来运行C#代码片段。
最后,请注意,命令行是特定于实现的;对于MS,它是csc;对于Mono,它是gmcs和其他工具.... 同样,要执行:对于MS版本只需输入“exename”,而对于Mono通常需要输入“mono exename”。
最后,许多项目都使用构建脚本工具进行构建;MSBuildNAnt等等。

3
我确实使用这个集成开发环境,但我有必要了解它。不了解它感觉很不舒服!非常感谢你的回复。 - Sajal Dutta
1
+1 给 NAnt!LINQPad 用于实验代码片段非常好:http://www.linqpad.net/ - TrueWill

6
以下是如何安装MSBuild和独立的C# 7.0编译器,它不再捆绑在最新的.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 不支持在没有预配置项目的情况下编译单个源文件

3

PowerShell可以直接执行C#代码。

一行命令编译并执行文件:

(Add-Type -Path "Program.cs" -PassThru)::Main() #'Main' is the entry point

假设你有一个像这样的 .cs 文件:

using System;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello from C#");
    }
}

3

添加到路径

C:\Windows\Microsoft.NET\Framework\v3.5

编译:

csc file.cs

执行:

file

3
如果你已经设置了正确的系统和环境变量,并且你的路径已经正确配置,那么我找到了一个简单的方法来完成这个任务。你只需要在项目目录下运行dotnet new console命令,它将会生成所需的文件,例如.csproj文件,同时也会自动生成一个Program.cs文件作为入口点。如果你有其他带有静态Main方法的文件,可以删除这个文件,系统会自动找到Main入口点。然后,你只需要运行dotnet run命令就可以编译和运行程序了。这是我在使用GitBash作为终端的VS Code中解决问题的方法。我安装了VS 2019,并使用了该软件提供的.NET 5.0框架作为我的系统变量。这是我发现的最简单的基本控制台程序解决方案之一,它还允许你在.csproj文件中添加自定义导入。

1
这就是我一直在寻找的答案。我不得不去其他地方找到它,然后回来这个问题确认有人提到过它。另外,dotnet build会生成一个.exe文件。 - Chris Broski

2
在Windows系统中,当当前目录在Microsoft Visual Studio 中时,在命令提示符中使用命令csc <filename>.cs
有两种方法: 使用命令提示符:
  1. 开始 --> 命令提示符
  2. 使用命令更改目录到Visual Studio文件夹:cd C:\Program Files (x86)\Microsoft Visual Studio\2017\
  3. 使用命令:csc /.cs
使用开发人员命令提示符:
  1. 开始 --> VS 2017的开发人员命令提示符(此处目录已设置为Visual Studio文件夹)

  2. 使用命令:csc /.cs


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接