iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
佛心分享-SideProject30

30天的旅程!從學習C#到開發小專案系列 第 11

DAY 11 - 認識套件管理工具 - NuGet!

  • 分享至 

  • xImage
  •  

哈囉大家好!
今天要來介紹一個免費、開源的套件管理工具-NuGet,是專門為.NET平台設計的管理工具。
透過NuGet, 開發者可以更輕鬆的在專案中加入、更新、移除或管理別人已經寫好的程式碼套件。
可以想像成像在玩樂高積木一樣,不需要自己親手建立各種積木、零件...等,可以直接從公用的箱子裡拿已經做好的小零件,用更快速有效率的方式完成自己的積木作品。
套件可以是各種功能,例如:處理資料庫的連線、處理JSON檔...等。

NuGet的主要功能和優點

  1. 統一標準:將打包、發布、使用程式碼的方式標準化,讓套件整合更容易。
  2. 管理依賴關係:當使用某一個套件時,這個套件可能也會依賴其他的套件。NuGet會幫我們自動處理依賴關係,確定所有需要的套件都有成功安裝,並且解決版本衝突的問題。
  3. 版本控制:可以選擇使用特定版本的套件,需要upgrade或downgrade的時候也可以很容易地切換版本。
  4. 加速開發:可以直接使用公開的現成套件,不需要自己造輪子~

和其他管理工具的相似之處

了解NuGet的功能和特色後,是不是覺得有點熟悉呢?
沒錯!NuGet就像npm和GitHub的混合版,結合了npm和GitHub的部分核心功能。

  1. NuGet的NPM(Node Package Manager)特性:管理相依性

    • 下載和安裝:
      安裝JavaScript套件時,會執行npm install指令,而NuGet也允許開發者透過指令來下載安裝C#套件(即.nupkg檔)。

    • 處理相依性(Dependency):
      安裝JavaScript套件時,npm會處理package.json裡面的dependencies。當安裝C#套件時,NuGet會自動檢查這個套件依賴的其他套件,並且會一起下載安裝到專案中。

  2. NuGet的GitHub特性:管理和分享套件

    • 公開與私人倉庫(public/private repository)
      (1)公開套件:NuGet主要的套件來源是官方的網站,就像是GitHub的public repo一樣,大家可以在上面發布或下載套件。
      (2)私人套件:許多公司或組織會架設自己的NuGet Server,就像企業的GitHub Enterprise。可以將私人套件發布至伺服器中,只提供給特定的團隊或專案做使用。

    • 版本控制(version control)
      NuGet不會直接對程式碼進行版本控制,但它對套件版本的處理方式,讓開發者可以很容易的管理不同的套件版本,提高專案的維護性。

實際使用NuGet

根據IDE的不同,使用NuGet套件的流程也會有點不一樣。這裡我示範的是在VSCode裡做使用!

  1. 安裝套件
    首先,先在VSCode打開專案資料夾,在terminal執行安裝套件的指令:
    (我建立一個新的C# Console app, 使用的套件是Newtonsoft.Json,專門用來處理Json資料的套件)

    dotnet add package Newtonsoft.json
    

    執行完指令後,NuGet會幫我們下載最新版本的套件,並且將套件的引用資訊加到專案檔(.csproj)中。

        <Project Sdk="Microsoft.NET.Sdk">
    
          <PropertyGroup>
            <OutputType>Exe</OutputType>
            <TargetFramework>net9.0</TargetFramework>
            <ImplicitUsings>enable</ImplicitUsings>
            <Nullable>enable</Nullable>
          </PropertyGroup>
    
          <ItemGroup>
            <PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
          </ItemGroup>
    
        </Project>
    
  2. 使用套件
    接下來要用Newtonsoft.json把物件轉換成json字串:

using Newtonsoft.Json;

public class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

}

class Program
{
    static void Main(string[] args)
    {
        var newPost = new Post
        {
            Id = 1,
            Title = "Hello World",
            Content = "This is my first post!"
        };

        string jsonStr = JsonConvert.SerializeObject(newPost, Formatting.Indented);
        Console.WriteLine(jsonStr);
    }
}

最後再執行dotnet run指令,就可以在terminal看到json字串~

今天簡單介紹了NuGet這個.NET平台的套件管理工具,明天要來試試看ASP.NET Core框架搭配Entity Framework Core(EF Core)來操作資料庫~


上一篇
DAY 10 - 認識傳輸資料小幫手DTO (資料傳輸物件)
下一篇
DAY 12 - 利用EF Core來操作資料庫
系列文
30天的旅程!從學習C#到開發小專案12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言