179

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

4

17 回答 17

162

CSC.exe 是 .NET Framework 中包含的 CSharp 编译器,可用于从命令提示符进行编译。如果使用“/target:exe”,则输出可以是可执行文件“.exe”,也可以是 DLL;如果您使用 /target:library,则 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  ...

(全部在一条线上)

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

确保您在其中一个类中定义了一个静态 Main() 方法,以充当“入口点”。

要运行生成的 EXE,请键入MyApplication,然后<ENTER>使用命令提示符。

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

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

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

在 Mac 上

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

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

然后运行它:

$ mono MyApplication.exe
于 2009-02-16T12:25:18.800 回答
20

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

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

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

或取决于您的 PC 具有哪个 .NET。

因此,您不必每次编译代码时都提及整个路径。只需使用

“C:\Users\UserName\Desktop>csc [选项] 文件名.cs”

或者你的代码路径在哪里。

现在你可以走了。

于 2014-09-09T15:35:56.110 回答
16

您可以编译 C# 程序:

c: > csc Hello.cs

你可以运行程序

c: > 你好

于 2015-11-25T06:56:56.090 回答
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    

一个示例 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!
于 2016-11-28T21:56:04.793 回答
8

虽然知道如何在命令行构建绝对是一件好事,但对于大多数工作来说,使用 IDE 可能更容易。C#速成版是免费的,而且物有所值;-p

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

最后 - 请注意命令行是特定于实现的;对于 MS,它是csc; 对于mono,它是gmcs和朋友们......同样,执行:它只是 MS 版本的“exename”,但通常是 mono 的“mono exename”。

最后,很多项目都是用构建脚本工具构建的;MSBuildNAnt

于 2009-02-16T12:42:25.437 回答
6

以下是如何使用独立的 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不支持在没有预配置项目的情况下编译单个源文件。

于 2017-12-03T23:59:39.417 回答
5

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

于 2013-12-29T05:52:26.207 回答
2

您可以在 VS 命令提示符下构建类文件(以便加载所有必需的环境变量),而不是默认的 Windows 命令窗口。

要了解有关使用 csc.exe(编译器)构建命令行的更多信息,请参阅本文

于 2009-02-16T12:25:57.080 回答
2

添加到路径

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

编译:

csc file.cs

执行:

file
于 2019-10-26T11:23:49.143 回答
1

一旦你编写了 c# 代码并保存它。您可以像其他代码一样使用命令提示符来执行它。

在命令提示符中输入文件所在的目录并键入

编译:

mcs yourfilename.cs

执行:

mono yourfilename.exe 

如果您希望您的 .exe 文件具有不同的名称,请键入

编译:

mcs yourfilename.cs -out:anyname.exe 

执行:

mono anyname.exe 

这应该有帮助!

于 2016-07-18T19:20:53.773 回答
1

在 Windows 系统中,csc <filname>.cs当当前目录位于 Microsoft Visual Studio\<Year>\<Version> 时,在命令提示符中使用该命令

有两种方法:

使用命令提示符:

  1. 开始 --> 命令提示符
  2. 使用以下命令将目录更改为 Visual Studio 文件夹:cd C:\Program Files (x86)\Microsoft Visual Studio\2017\ <Version>
  3. 使用命令:csc /.cs

使用开发人员命令提示符:

  1. 开始 --> VS 2017 的开发人员命令提示符(这里的目录已经设置为 Visual Studio 文件夹)

  2. 使用命令:csc /.cs

希望能帮助到你!

于 2018-12-21T06:14:41.950 回答
1

如果你已经安装了 Visual Studio,那么你就有了 VS 的开发者命令提示符。您可以使用命令轻松构建您的程序csc,并在开发人员命令提示符中使用应用程序的名称运行您的应用程序。

您可以打开开发人员命令提示符,如下所示。

开始 => VS 的开发人员命令提示符

希望这可以帮助!

于 2019-10-01T11:01:29.800 回答
0

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn

在这里您可以找到支持 c#7 的 c# 编译器,否则它将使用仅支持 c# 5 的 .net 4 编译器

于 2019-10-30T18:38:50.703 回答
0

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#");
    }
}
于 2021-06-05T19:17:10.397 回答
0
dotnet

这太旧了。但是,当您提出问题以了解如何在没有 Visual Studio CE 的情况下使用编译器在控制台中使用 C#(如 C 或 C++)时,这是您最终成为初学者的地方(如果您还没有使用它,强烈建议您使用 C#)最终在 .NET 框架、库和 SDK 的术语中变得更加困惑。如果像你这样的人作为一个完整的初学者偶然发现我的答案:

1.了解Framework和SDK的区别。

2.了解什么是 C#,什么是 .NET。

3.这个:https ://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/intro

你会在路上捡起剩下的。但我建议不要使用框架,而是使用 SDK 并且主要坚持使用 VS。至于我,我学习 C# 是为了统一,主要是游戏开发。

谷歌也是你的朋友。提问,保持好奇。

于 2021-08-28T05:36:12.243 回答
0

如果您设置了正确的系统和环境变量并且您的路径配置正确,我找到了一种简单的方法来执行此操作。

你只需要在项目的目录下运行

dotnet new console--> 这将生成所需的文件,例如 .csproj。它还会生成一个 Program.cs 文件,它会自动将其用作入口点,如果您有其他文件使用静态 Main 方法,则可以删除此文件,它应该会自动找到 Main 入口点。

那么你需要做的就是运行 dotnet run它应该自动编译和运行

这就是我如何设法让我的项目使用 gitbash 作为我的终端在 vs 代码中工作。我还安装了 VS 2019,我使用了 .net 5.0 框架作为我的系统变量。这是我为基本控制台程序找到的最简单的解决方案。它还允许您在 .csproj 文件中添加自定义导入

于 2021-11-12T05:22:18.893 回答
0
# File    : csharp.ps1
# Purpose : Powershell Script to compile a csharp console application from powershell prompt

try {
    # CSharp Compiler
    #$csc = "C:\Windows\Microsoft.NET\Framework\v3.5\bin\csc.exe"
    $csc = "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"
    # NOTE: if this path doesn't work search Framework folder for csc.exe

    $ErrorActionPreference = 'Stop'

    if ($args.Count -eq 0) {
        write-host "`nUSAGE: csharp.ps1 (console_application.cs)"
        exit 1
    }

    $file = $args[0];
    if (-not(test-path $file)) {
        throw "file doesn't exist: $file"   
    }
    
    $cmd = "$csc /nologo  /t:exe  /out:${file}.exe $file"

    write-host  -ForegroundColor Green "`nx: $cmd"
    invoke-expression $cmd  
}   
catch { 
    write-host -ForegroundColor Red "`nEXCEPTION: $_"
}
finally {
    write-host ""
}
// File: helloworld.cs
using System;

namespace MyProgram
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.Write("Hello World...");
            Console.ReadKey(true);
        }
    }
}
PS> .\csharp.ps1 helloworld.cs
于 2022-03-02T14:09:22.787 回答