共用方式為


教學課程:使用 .NET CLI 建立 .NET 工具

本文適用於: ✔️.NET Core 2.1 SDK 和更新版本

本教學課程會教導您如何建立和封裝 .NET 工具。 .NET CLI 可讓您建立控制台應用程式做為工具,其他人可以安裝並執行。 .NET 工具是從 .NET CLI 安裝的 NuGet 套件。 如需工具的詳細資訊,請參閱 .NET 工具概觀

您將建立的工具是主控台應用程式,會接受訊息作為輸入,並顯示訊息以及建立機器人影像的文字行。

這是三個教學課程系列中的第一個。 在本教學課程中,您會建立並封裝工具。 在接下來的兩個教學課程中,您會 使用此工具作為全域工具並使用此工具作為本機工具。 建立工具的程式與您將其作為全域工具或本機工具都相同。

先決條件

  • .NET SDK 6.0.100 或更新版本。

    本教學課程使用 .NET SDK 6.0,但從 .NET Core SDK 2.1 開始提供全域工具。 從 .NET Core SDK 3.0 開始,即可使用本機工具。

  • 選擇您喜好的文字編輯器或程式碼編輯器

建立專案

  1. 開啟命令提示字元,並建立名為 存放庫的資料夾。

  2. 瀏覽至存放 資料夾,然後輸入下列命令:

    dotnet new console -n microsoft.botsay -f net6.0
    

    此命令會在存放資料夾下建立名為 microsoft.botsay 的新資料夾。

    備註

    在本教學課程中,您會建立以 .NET 6.0 為目標的工具。 若要以不同的架構為目標,請變更 -f|--framework 選項。 若要以多個架構為目標,請將 TargetFramework 專案變更為 TargetFrameworks 項目檔中的專案,如下列範例所示:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFrameworks>net8.0;net6.0</TargetFrameworks>
      </PropertyGroup>
    </Project>
    
  3. 流覽至 microsoft.botsay 資料夾。

    cd microsoft.botsay
    

新增程式碼

  1. 使用程式代碼編輯器開啟 Program.cs 檔案。

  2. Program.cs 中的程式碼替換為以下程式碼:

    using System.Reflection;
    
    namespace microsoft.botsay;
    
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
    

    您在 using System.Reflection; 下一個步驟中新增的程式代碼需要 指示詞。

  3. Main以下列程式代碼取代 方法,以處理應用程式的命令行自變數。

    static void Main(string[] args)
    {
        if (args.Length == 0)
        {
            var versionString = Assembly.GetEntryAssembly()?
                                    .GetCustomAttribute<AssemblyInformationalVersionAttribute>()?
                                    .InformationalVersion
                                    .ToString();
    
            Console.WriteLine($"botsay v{versionString}");
            Console.WriteLine("-------------");
            Console.WriteLine("\nUsage:");
            Console.WriteLine("  botsay <message>");
            return;
        }
    
        ShowBot(string.Join(' ', args));
    }
    

    如果未傳遞任何自變數,則會顯示簡短的說明訊息。 否則,所有自變數都會串連成單一字串,並藉由呼叫 ShowBot 您在下一個步驟中建立的方法來列印。

  4. 新增名為 ShowBot 的新方法,這個方法會採用字串參數。 方法會使用文字行列印出機器人的訊息和影像。

    static void ShowBot(string message)
    {
        string bot = $"\n        {message}";
        bot += @"
        __________________
                          \
                           \
                              ....
                              ....'
                               ....
                            ..........
                        .............'..'..
                     ................'..'.....
                   .......'..........'..'..'....
                  ........'..........'..'..'.....
                 .'....'..'..........'..'.......'.
                 .'..................'...   ......
                 .  ......'.........         .....
                 .    _            __        ......
                ..    #            ##        ......
               ....       .                 .......
               ......  .......          ............
                ................  ......................
                ........................'................
               ......................'..'......    .......
            .........................'..'.....       .......
         ........    ..'.............'..'....      ..........
       ..'..'...      ...............'.......      ..........
      ...'......     ...... ..........  ......         .......
     ...........   .......              ........        ......
    .......        '...'.'.              '.'.'.'         ....
    .......       .....'..               ..'.....
       ..       ..........               ..'........
              ............               ..............
             .............               '..............
            ...........'..              .'.'............
           ...............              .'.'.............
          .............'..               ..'..'...........
          ...............                 .'..............
           .........                        ..............
            .....
    ";
        Console.WriteLine(bot);
    }
    
  5. 儲存您的變更。

測試應用程式

執行專案並查看輸出。 請在命令行嘗試這些變化,以查看不同的結果:

dotnet run
dotnet run -- "Hello from the bot"
dotnet run -- Hello from the bot

分隔符之後 -- 的所有自變數都會傳遞至您的應用程式。

封裝工具

您必須先修改項目檔,才能將應用程式封裝並散發為工具。

  1. 開啟 microsoft.botsay.csproj 檔案,並將三個新的 XML 節點新增至節點的 <PropertyGroup> 結尾:

    <PackAsTool>true</PackAsTool>
    <ToolCommandName>botsay</ToolCommandName>
    <PackageOutputPath>./nupkg</PackageOutputPath>
    

    <ToolCommandName> 是選擇性專案,指定在安裝工具之後會叫用此工具的命令。 如果未提供這個專案,工具的命令名稱就是元件名稱,通常是沒有 .csproj 擴展名的項目檔名稱。

    備註

    <ToolCommandName>選擇唯一值。 請避免使用擴展名 (例如 .exe.cmd),因為工具會安裝為應用程式主機,而且命令不應該包含擴展名。 這有助於防止與現有命令發生衝突,並確保安裝體驗順暢。

    <PackageOutputPath> 是選擇性專案,可決定要產生 NuGet 套件的位置。 NuGet 套件是 .NET CLI 用來安裝工具的內容。

    專案檔現在看起來像下列範例:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
    
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
    
        <PackAsTool>true</PackAsTool>
        <ToolCommandName>botsay</ToolCommandName>
        <PackageOutputPath>./nupkg</PackageOutputPath>
    
      </PropertyGroup>
    
    </Project>
    
  2. 執行 dotnet pack 命令來建立 NuGet 套件:

    dotnet pack
    

    microsoft.botsay.1.0.0.nupkg 檔案會建立在 microsoft.botsay.csproj 檔案的值所<PackageOutputPath>識別的資料夾中,在此範例中為 ./nupkg 資料夾。

    當您要公開發行工具時,您可以將它上傳至 https://www.nuget.org。 在 NuGet 上使用此工具之後,開發人員可以使用 dotnet tool install 命令來安裝此工具 。 在本教學課程中,您會直接從本機 nupkg 資料夾安裝套件,因此不需要將套件上傳至 NuGet。

Troubleshoot

如果您在遵循教學課程時收到錯誤訊息,請參閱 針對 .NET 工具使用問題進行疑難解答

後續步驟

在本教學課程中,您已建立控制台應用程式,並將其封裝為工具。 若要瞭解如何使用此工具作為全域工具,請繼續進行下一個教學課程。

如果您想要的話,您可以略過全域工具教學課程,並直接移至本機工具教學課程。