라이브러리와 앱 .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 규칙
요약
요약: 재사용과 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 라이브러리와 앱 .csproj, 의미 체계 버전 관리
- NuGet 패키징과 게시
- 다중 대상 지정