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



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

$ dotnet run

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

$ ./my_console_app file_inputs.txt

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

若要在 Linux 中创建独立的控制台应用,应为 dotnet 核心应用使用独立部署 (SCD) 发布模式:

  • https://learn.microsoft.com/en-us/dotnet/core/deploying/index#self-contained-deployments-scd

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

我建议使用官方的 dotnet cliconsole模板,然后通过指定目标运行时(例如:linux-x64)和框架来将项目发布为--self-contained开关。

因此,请从基本的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 core 中创建独立 Linux 控制台应用的更详细的文章:

  • https://blogs.msdn.microsoft.com/luisdem/2016/10/11/net-core-how-to-publish-a-self-contained-application-exe/

也可以在publish页面上阅读有关其他可用 Linux 模板的更多信息:

  • https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-publish?tabs=netcore2x

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

$ touch my_console_app
$ chmod 777 my_console_app

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

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

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

$ ./my_console_app file_inputs.txt

编辑:

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

dotnet ./path/to/your/project.dll "$1"

最新更新