据我所知,在 https://www.microsoft.com/net/learn/get-started/macos 中,我们只能运行它。
$ dotnet run
我需要创建一个控制台应用程序,可以在终端中执行,如下所示:
$ ./my_console_app file_inputs.txt
如何创建一个可在终端中运行的可执行文件?
$ dotnet run
我需要创建一个控制台应用程序,可以在终端中执行,如下所示:
$ ./my_console_app file_inputs.txt
如何创建一个可在终端中运行的可执行文件?
为了在Linux中创建一个独立的控制台应用程序,您应该使用自包含部署(SCD)发布模式来发布您的dotnet core应用程序:
这将生成一个单一的二进制文件,其中包含目标框架,并且可以独立执行,无需任何额外的shell脚本或预安装的dotnet运行时。
我建议使用官方的dotnet cli console
模板,然后通过指定您使用的目标运行时(例如: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
您可以将发布文件夹
分发,然后通过以下方式轻松执行应用程序:
./myconsoleapp file_inputs.txt
这是一篇有关在dotnet core中创建独立Linux控制台应用程序的更为详细的文章:
此外,您还可以在publish
页面了解其他可用的Linux模板:
self-contained
描述和文章参考,以生成一个无需外部脚本即可执行的单个二进制文件。 - muratiakos最终,我能够自己找到答案并解决了这个问题。 我创建了一个Shell脚本并使其可执行。
$ touch my_console_app
$ chmod 777 my_console_app
dotnet run --project ./path/to/your/project.csproj "$1"
现在我可以使用可执行的shell脚本来运行和执行我的.NET Core项目,并能够接受参数参数。
$ ./my_console_app file_inputs.txt
编辑:
如果您只有来自 .net core 项目的 .dll 文件,您可以将 my_console_app 的内容更改为:
dotnet ./path/to/your/project.dll "$1"
dotnet publish --self-contained
。这将向你展示一个更简单的方法。 - Lex Li