从命令行编译C#代码时出错

23

我正在按照这个教程进行操作:

http://www.csharp-station.com/Tutorials/Lesson01.aspx

我将这段代码复制到一个文本文件中,并将其命名为 Welcome.cs:

// Namespace Declaration
using System;

// Program start class
class WelcomeCSS
{
    // Main begins program execution.
    static void Main()
    {
        // Write to console
        Console.WriteLine("Welcome to the C# Station Tutorial!"); 
    }
}

接着我进入了命令提示符,指向文件所在的目录。我输入csc.exe Welcome.cs,然后收到了以下错误信息:

csc.exe is not recognized as internal or external command

我正在使用Visual Studio 2008。

我尝试将csc.exe移动到Windows目录,现在我遇到了这个错误:

fatal error cs2018: unable to find messages file 'cscompui.dll'

我该如何在命令行中编译我的C#代码?


5
FYI...你不应该将csc.exe移动到Windows文件夹中。它有太多的依赖项,无法找到它们。 - David
6个回答

31

csc.exe不在你的路径中。尝试使用完全限定名称:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe

(当然,根据你使用的框架替换3.5)

请注意,此处未使用Visual Studio。无论您使用的是哪个版本,因为您在命令行编译时不会使用它。命令行编译器是框架本身的一部分。


11
或者在Microsoft VS 2010\VS工具中,使用开始菜单中的Visual Studio命令提示项。 - Gishu
2
@Gishu:当然,这是另一种方法。对于这个问题有多种答案。但他最好知道可执行文件的位置。尤其是如果他想在批处理文件中编写脚本来进行编译。或者在没有Visual Studio的机器上进行编译。 - David
9
此外,您可以使用命令行将该文件夹添加到您的路径中:path=%path%;C:\WINDOWS\Microsoft.NET\Framework\v3.5,但这仅适用于会话持续时间。要永久添加它到路径中,请修改环境变量(在系统控制面板下)。但这可能比您想要的信息更多。 :) - JYelton
2
@JYelton:也许比他想要的多,但对于以后发现这个问题的任何人来说,这里绝对值得注意 :) - David

7
你可能正在运行cmd(Windows命令提示符),而不是Visual Studio工具文件夹中可用的Visual Studio命令提示符
查看文件夹:
C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Microsoft Visual Studio 2008 \ Visual Studio Tools

5
这很可能是因为包含csc.exe的目录不在您的路径中,因为您只是运行标准的Windows命令提示符。
Visual Studio 2008(像所有版本一样)都带有自己的命令提示符。这本质上是cmd.exe,带有一些设置脚本,使所有Visual Studio工具可访问(首先将相关目录放入您的路径中)。
控制台可以通过“开始”菜单轻松访问,并应称为“Visual Studio 2008命令提示符”(位于“Visual Studio工具”文件夹下)。

3
如果您希望能够从命令行的任何位置使用 CSC.exe 和其他框架工具,请将它们添加到您的 Path 环境变量中。
... 根据框架版本和是否安装了 Windows SDK,这些可能会略有不同。 (如果您使用的是 64 位系统,也会有所不同)
  • c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
  • C:\WINDOWS\Microsoft.NET\Framework\v3.5;
  • c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;
  • c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;

1
为了使 Microsoft .NET Framework 的编译器程序 csc.exe 可以通过命令行调用,请将以下内容添加到您的 PATH 环境变量的末尾。 右键单击 "我的电脑" 选择属性。
点击 "高级" 选项卡。
点击 "环境变量" 按钮。
向下滚动 "系统变量" 列表找到 "Path" 变量。
双击 "Path"。
按下 "End" 键
输入 (以分号作为分隔符开头)
;C:\Windows\Microsoft.NET\Framework\v4.0.30319

(确保匹配正确的框架版本来自 C:\Windows\Microsoft.NET\Framework)

点击"确定"
点击 "确定" 关闭系统属性窗口.

验证更改:

打开CMD并输入诸如 "csc" 的命令
你将得到类似以下内容:

C:\Users\Jerry\Documents\coding>csc
Microsoft (R) Visual C# 编译器 版本4.0.30319.33440用于 Microsoft (R) .NET Framework 4.5 版权所有 (C) Microsoft Corporation.保留所有权利.


1
我发现这个答案很有用,所以我创建了一个PowerShell脚本来与Vagrant集成,https://gist.github.com/javier-lopez/449c97c7d07ffcf44cde67992b6a3f1b - Javier López

0
几个选项: 1)使用 Visual Studio 工具文件夹中的“Visual Studio 2008 命令提示符”。这将加载带有正确路径设置的命令提示符,以便它能够识别工具名称。 2)绕过此步骤,在“生成”菜单中选择“重新生成解决方案”。然后您的 bin 目录中应该有您的 exe 文件。

1
我没有BUILD菜单,因为它只是一个cs文件。 - Alex Gordon
您在问题中提到了VS 2008,因此我认为您正在使用Visual Studio 2008。 - Jeremy

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