Dot-Net

如何在 Linux 中從 .NET Core 2.0 創建可執行控制台應用程序?

  • April 6, 2018

據我在<https://www.microsoft.com/net/learn/get-started/macos>中了解,我們只能執行它:

$ dotnet run

我需要創建一個我們從終端執行的控制台應用程序,如下所示:

$ ./my_console_app file_inputs.txt

如何創建可以在這樣的終端中執行的執行檔?

為了在 Linux 中創建獨立的控制台應用程序,您應該為您的 dotnet 核心應用程序使用自包含部署 (SCD) 發布模式:

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

這將生成一個捆綁目標框架的單個二進製文件,並且可以獨立執行,無需任何額外的 shell 腳本或預安裝的 dotnet 執行時。

我建議使用官方的 dotnet cliconsole模板,然後--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 &gt; 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://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish?tabs=netcore2x>

引用自:https://stackoverflow.com/questions/49692123