0Pricing
C# Academy · 강의

라이브러리와 앱 .csproj, 의미 체계 버전 관리

라이브러리와 앱의 .csproj 차이, NuGet이 라이브러리를 사용하는 방식, 의미 체계 버전 관리(MAJOR.MINOR.PATCH)가 릴리스를 이끄는 방식을 이해합니다.

라이브러리와 앱 .csproj, 의미 체계 버전 관리은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

개념 및 목표

목표: 라이브러리와 앱 중 언제 무엇을 만들어야 하는지, 그리고 버전이 변경 사항을 어떻게 나타내는지 이해합니다.

  • 라이브러리 .csproj: 참조되고 NuGet용으로 패키징되도록 빌드됩니다
  • 앱 .csproj: 최종 사용자를 위한 실행 파일을 생성합니다
  • 유의적 버전 관리: MAJOR.MINOR.PATCH

라이브러리와 앱: 간단히 보기

  • 라이브러리: 재사용을 극대화하도록 프레임워크를 대상으로 하며 메타데이터(PackageId, 버전, 작성자)를 포함합니다.
  • 앱: 진입점을 포함하고 실행 가능한 출력을 게시합니다.
  • 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, 버전, 작성자를 입력합니다
  • 라이선스와 읽어 보기 파일을 포함합니다
  • 공개 API를 검토하여 호환성을 깨뜨리는 변경이 없는지 확인합니다

SemVer 규칙

간단히 확인해 보겠습니다. 유의적 버전 관리에서 일반적으로 MAJOR 버전 증가가 필요한 변경은 무엇입니까?

요약

요약: 재사용과 NuGet 패키징을 위해 라이브러리를 빌드하고, 앱은 실행 파일로 빌드합니다. MAJOR.MINOR.PATCH를 사용하여 변경 사항을 안전하게 전달합니다.

자주 묻는 질문

“라이브러리와 앱 .csproj, 의미 체계 버전 관리” 강의는 무료인가요?

네 — “라이브러리와 앱 .csproj, 의미 체계 버전 관리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“라이브러리와 앱 .csproj, 의미 체계 버전 관리”에서 뭘 배우나요?

라이브러리와 앱의 .csproj 차이, NuGet이 라이브러리를 사용하는 방식, 의미 체계 버전 관리(MAJOR.MINOR.PATCH)가 릴리스를 이끄는 방식을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 1번째 강의입니다.

“라이브러리와 앱 .csproj, 의미 체계 버전 관리” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 라이브러리와 앱 .csproj, 의미 체계 버전 관리
  2. NuGet 패키징과 게시
  3. 다중 대상 지정
← C# Academy(으)로 돌아가기