3

我应该使用什么命令从 Linux 的命令行启动这个 C# 程序?我已经编译了它(使用 Monodevelop),但我不知道如何从命令行启动它。

using System;
class ExampleClass
{
    static void Main()
    {
        Console.WriteLine("Hello, world!");
    }
}
4

1 回答 1

8

在 Linux 上启动 C#(或任何其他 .NET)程序所需的命令行取决于您配置 Linux 系统的方式。

标准答案是运行mono程序,并将可执行程序集的名称作为参数传递。可执行程序集的名称通常与项目文件的名称相同,但您可以轻松更改它;.exe只需在完成编译后查找以结尾的文件即可。它将位于名为 或类似的文件夹中bin\Debugbin\Release这取决于您如何设置项目构建设置)。因此,如果您构建了一个名为的程序,hello.exe您将进入您的项目文件夹并运行:

~/projects/hello $ mono bin\Debug\hello.exe

您需要运行该mono程序的原因是因为默认情况下 Linux 不知道如何自动运行 .NET 运行时。当您在 Windows 上安装 .NET 时,它实际上会更改操作系统中加载程序的部分,因此 Windows 只是自动识别 .NET 程序并加载运行时。在 Linux 上,您需要自己执行此操作,mono首先运行程序。

如果您在 Linux 上运行大量托管代码,您还可以将 Linux 内核配置为与 Windows 相同的工作方式。Linux 支持“杂项二进制格式”,允许您告诉 Linux 如何执行非原生 Linux 格式的二进制文件。这有点先进——它可能需要你构建一个自定义内核,但如果你的 Linux 发行版有更好的方法来做到这一点,我不会感到惊讶。可以在此处找到有关此过程的更多信息:

http://www.kernel.org/doc/Documentation/mono.txt

于 2012-10-21T02:40:11.517 回答