c# - 在 Linux 上从命令行启动 C# 程序

标签 c#

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

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

最佳答案

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

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

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

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

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

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

关于c# - 在 Linux 上从命令行启动 C# 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994260/

相关文章:

c# - Environment.StackTrace 如何抛出 ArgumentOutOfRangeException?

c# - 开始一个过程时如何使用多个动词?

c# - 替换 DataGridView 中的 DateTime.MinValue

c# - 连接到 Azure 文件存储上的 SQLite 数据库

c# - 使用 CSS 在另一个元素之前插入元素

c# - 多个按钮调用相同的功能,可以找出哪个按钮调用了该功能吗?

c# - 实体名称枚举

c# - 如何将 List<Class> 转换为 String?

c# - C#.net 中是否允许使用双分号 ( ; ; )?

c# - C#中如何判断一个线程是否繁忙?