0Pricing
C# Academy · レッスン

ライブラリとアプリの.csproj、セマンティックバージョニング

ライブラリとアプリの.csprojの違い、NuGetがライブラリを利用する仕組み、セマンティックバージョニング(MAJOR.MINOR.PATCH)がリリースを導く方法を理解します。

「ライブラリとアプリの.csproj、セマンティックバージョニング」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。

概念と目標

目標:ライブラリとアプリのどちらを作成すべきか、またバージョンが変更をどのように示すかを理解します。

  • ライブラリの.csproj:参照され、NuGet用にパッケージ化されることを目的とします
  • アプリの.csproj:エンドユーザー向けの実行可能ファイルを生成します
  • セマンティックバージョニング:MAJOR.MINOR.PATCH

ライブラリとアプリ:概要

  • ライブラリ:再利用性を高めるためにフレームワークをターゲットにし、メタデータ(PackageId、Version、Authors)を持ちます。
  • アプリ:エントリポイントを持ち、実行可能な出力を公開します。
  • NuGetはライブラリを.nupkgにパッケージ化します。アプリは通常、パッケージ化せずに公開します。

アセンブリバージョンの例

ライブラリはバージョンを公開し、利用側はパッケージを参照したときにそのバージョンを確認できます。

using System;
using System.Reflection;

// Simple demo: read the assembly version at runtime.
// In a packed library, this reflects the version consumers see.
public class Program
{
  public static void Main(string[] args)
  {
    Version v = Assembly.GetExecutingAssembly().GetName().Version;
    Console.WriteLine("Assembly version: " + (v == null ? "unknown" : v.ToString()));
  }
}

SemVer の比較(基本)

更新を判断するためにバージョンを比較します。まずMAJOR、次にMINOR、最後にPATCHを比較します。

using System;

// Minimal SemVer (MAJOR.MINOR.PATCH) parsing and comparison.
// Ignores prerelease/build metadata for simplicity (good enough for beginners).
public class SemVer : IComparable<SemVer>
{
  public int Major;
  public int Minor;
  public int Patch;

  public static bool TryParse(string s, out SemVer v)
  {
    v = null;
    if (string.IsNullOrEmpty(s)) return false;
    string[] parts = s.Split('.');
    if (parts.Length < 3) return false;
    int a, b, c;
    if (!int.TryParse(parts[0], out a)) return false;
    if (!int.TryParse(parts[1], out b)) return false;
    if (!int.TryParse(parts[2], out c)) return false;
    v = new SemVer { Major = a, Minor = b, Patch = c };
    return true;
  }

  public int CompareTo(SemVer other)
  {
    if (other == null) return 1;
    if (Major != other.Major) return Major.CompareTo(other.Major);
    if (Minor != other.Minor) return Minor.CompareTo(other.Minor);
    return Patch.CompareTo(other.Patch);
  }

  public override string ToString()
  {
    return Major + "." + Minor + "." + Patch;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    SemVer a, b;
    if (SemVer.TryParse("1.4.2", out a) && SemVer.TryParse("1.5.0", out b))
    {
      int cmp = a.CompareTo(b);
      Console.WriteLine(a + " vs " + b + " -> " + (cmp < 0 ? "older" : (cmp > 0 ? "newer" : "equal")));
    }
  }
}

バージョン更新ルール

更新ルール:

  • MAJOR:互換性を壊すAPI変更
  • MINOR:後方互換性のある新機能
  • PATCH:APIを変更しないバグ修正や保守作業

ヒント:変更内容を短い変更履歴で伝えます。

パッケージ化前チェックリスト

  • ライブラリのターゲットが設定されている(例:netstandard)
  • PackageId、Version、Authorsが入力されている
  • ライセンスとREADMEが含まれている
  • 公開APIについて、互換性を壊す変更がないか確認されている

SemVer のルール

簡単な確認です。セマンティックバージョニングで、通常MAJORバージョンの更新が必要になる変更はどれですか?

まとめ

まとめ:再利用とNuGetパッケージ化のためにライブラリを構築し、アプリは実行可能ファイルとして作成します。変更を安全に伝えるにはMAJOR.MINOR.PATCHを使用します。

よくある質問

「ライブラリとアプリの.csproj、セマンティックバージョニング」レッスンは無料ですか?

はい。「ライブラリとアプリの.csproj、セマンティックバージョニング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。

「ライブラリとアプリの.csproj、セマンティックバージョニング」で何を学びますか?

ライブラリとアプリの.csprojの違い、NuGetがライブラリを利用する仕組み、セマンティックバージョニング(MAJOR.MINOR.PATCH)がリリースを導く方法を理解します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。

「ライブラリとアプリの.csproj、セマンティックバージョニング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ライブラリとアプリの.csproj、セマンティックバージョニング
  2. NuGetへのパッキングと公開
  3. マルチターゲティング
← C# Academyに戻る