据我所知,在 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"