如何在Linux中从.NET Core 2.0创建可执行控制台应用程序?

时间:2018-04-06 11:48:11

标签: .net linux .net-core

据我所知https://www.microsoft.com/net/learn/get-started/macos,我们只能运行它:

$ dotnet run

我需要创建一个我们从终端执行的控制台应用程序,如下所示:

$ ./my_console_app file_inputs.txt

如何创建可以在这样的终端中运行的可执行文件?

2 个答案:

答案 0 :(得分:13)

要在Linux中创建独立控制台应用程序,您应该为您的dotnet核心应用程序使用自包含部署(SCD)发布模式:

这将生成捆绑目标框架的单个二进制文件,并且可以独立执行,无需任何额外的shell脚本或预先安装的dotnet运行时。

我建议使用官方dotnet cli console模板,然后通过指定target runtime(例如:--self-contained)和框架将您的项目发布为linux-x64开关你用。

首先从基本的console模板开始:

dotnet new console -o myconsoleapp
cd myconsoleapp

编辑program.cs以根据您的业务逻辑处理您的输入文件或其他参数,例如:nano program.cs并添加如下内容:

using System;
namespace myconsoleapp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Linux!");
            if (args.Length > 0) { Console.WriteLine("Input is: " + args[0]); }
        }
    }
}

使用dotnet run file_inputs.txt测试您的应用程序,它应该正确打印到控制台。

为了分发二进制文件和捆绑框架,您应该运行dotnet publish

dotnet publish -c release --self-contained --runtime linux-x64 --framework netcoreapp2.0

然后,您可以分发publish folder,然后只需通过以下方式执行您的应用:

./myconsoleapp file_inputs.txt

这里有一篇关于在dotnet核心中创建独立Linux控制台应用程序的更详细的文章:

此处还可以在publish页面上阅读有关其他可用Linux模板的更多内容:

答案 1 :(得分:2)

最后,我能够找到答案,并由我自己解决。 我创建了一个shell脚本并使其可执行。

sudo

我将此命令放到新创建的my_console_app文件中并保存。

$ touch my_console_app
$ chmod 777 my_console_app

现在我可以使用这个可执行的shell脚本运行并执行我的.net核心项目,并且能够接受参数参数。

dotnet run --project ./path/to/your/project.csproj "$1"

编辑:

如果您只有.net核心项目的.dll文件,则可以将my_console_app的内容更改为:

$ ./my_console_app file_inputs.txt