Gitea Actions에서 Docker 기반 .NET 빌드가 가능하다고 했을 때, 여기서 사용하는 .NET SDK, MSBuild 등의 개념이 헷갈릴 수 있어.
그래서 MSBuild와 .NET SDK가 무엇이 다르고, 언제 어떤 것을 써야 하는지 설명해줄게.
📌 MSBuild vs .NET SDK 차이점
개념 | 설명 | 용도 |
---|---|---|
MSBuild (Microsoft Build Engine) | .NET 및 C# 프로젝트의 빌드 시스템, 프로젝트(.csproj)를 기반으로 코드 컴파일, 패키징, 배포를 수행 | Visual Studio 빌드, 프로젝트 빌드 자동화 |
.NET SDK | .NET 개발을 위한 도구 모음, MSBuild 포함 (.NET CLI 제공) | dotnet build , dotnet publish , dotnet run 명령어 사용 가능 |
Docker 기반 .NET 빌드 | 컨테이너에서 실행되는 .NET SDK를 이용한 빌드 환경 | CI/CD에서 독립적인 빌드 환경을 만들 때 사용 |
🔹 MSBuild란?
MSBuild (Microsoft Build Engine) 는 .NET 프로젝트를 빌드하는 엔진이야.
즉, .csproj
파일을 읽고, 코드 컴파일 → DLL 생성 → 패키징 → 배포 등의 작업을 수행해.
✅ MSBuild 실행 예시
MSBuild MyProject.csproj /p:Configuration=Release
✔ Visual Studio와 연동되어 있으며, 프로젝트 파일(.csproj)을 기반으로 작동
✔ .sln
파일을 빌드할 수도 있음
✔ CI/CD에서 많이 사용되지만, .NET SDK
없이 단독으로 실행하면 일부 기능이 제한될 수 있음
🔹 .NET SDK란?
.NET SDK는 MSBuild를 포함한 .NET 개발 및 실행 도구 모음이야.
즉, MSBuild도 .NET SDK 안에 포함되어 있기 때문에 .NET SDK
가 설치되어 있으면 MSBuild를 따로 설치할 필요가 없어!
✅ .NET SDK 실행 예시
dotnet build
dotnet publish -c Release -o ./publish
✔ .NET SDK
는 MSBuild를 포함하고 있으며, CLI 기반으로 실행 가능
✔ dotnet build
, dotnet publish
, dotnet run
등 다양한 명령어 제공
✔ CI/CD에서 자주 사용되며, Docker 환경에서도 기본적으로 사용됨
🔹 Docker 기반 .NET 빌드는 어떻게 다를까?
Docker에서 .NET 빌드를 수행할 때는 컨테이너 내부에 .NET SDK를 설치하고, dotnet build
명령어를 실행하는 방식이야.
이 방식은 CI/CD에서 독립적인 빌드 환경을 보장하기 때문에 Gitea Actions에서도 많이 사용돼.
✅ Docker 기반 .NET 빌드 예시 (Dockerfile)
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
# 프로젝트 파일 복사 및 복원
COPY *.csproj .
RUN dotnet restore
# 애플리케이션 빌드
COPY . .
RUN dotnet build -c Release --no-restore
RUN dotnet publish -c Release -o /publish
✔ mcr.microsoft.com/dotnet/sdk:8.0
→ 최신 .NET SDK 이미지를 사용
✔ dotnet build
, dotnet publish
명령어로 .NET 프로젝트를 빌드
✔ MSBuild는 내부적으로 자동 사용됨 (dotnet build
실행 시 MSBuild 호출됨)
🔹 언제 MSBuild를 사용하고, 언제 .NET SDK를 사용할까?
상황 | MSBuild | .NET SDK |
---|---|---|
Visual Studio에서 빌드 | ✅ 사용 | ✅ 사용 가능 |
명령어 기반 빌드 | ✅ 사용 가능 (MSBuild.exe ) |
✅ 사용 (dotnet build ) |
Docker 컨테이너에서 빌드 | ❌ 지원되지 않음 | ✅ 사용 가능 |
CI/CD에서 자동화 빌드 | ✅ 사용 가능 | ✅ 사용 가능 |
📌 결론
MSBuild는 .NET 프로젝트를 빌드하는 엔진
.csproj
파일을 읽어 컴파일, 패키징, 배포를 수행- Visual Studio, Jenkins, CI/CD에서 사용 가능
- 하지만 Docker 환경에서는 사용하기 어려움
.NET SDK는 MSBuild를 포함한 .NET 개발 도구 모음
dotnet build
,dotnet publish
등의 명령어 제공- Docker 기반 CI/CD 환경에서 기본적으로 사용됨
- Gitea Actions, GitHub Actions, Jenkins 등에서 가장 많이 사용됨
Docker 기반 .NET 빌드는 .NET SDK를 사용
- MSBuild 단독 사용 불가 → 대신
dotnet build
사용 - CI/CD 환경에서 독립적인 빌드 환경 제공
- MSBuild 단독 사용 불가 → 대신
📌 결론적으로, Gitea Actions에서 Docker 기반 .NET 빌드를 수행할 때는
✅ MSBuild 대신 .NET SDK를 사용해야 한다.
✅ .NET SDK
를 포함한 Docker 컨테이너(mcr.microsoft.com/dotnet/sdk:8.0
)를 사용하면 빌드 가능!
'저도공부를하긴한답니다?' 카테고리의 다른 글
4가지 방식 비교하기 (0) | 2025.03.10 |
---|---|
그러면 Docker 기반 .NET Build는 어떤 게 도커여야 한다는 거야? Web Application Server? 아니면 gitea actions가 docker에 있어야 한다는거야? 왜냐하면 내가 배포하고 싶은 Web Application Server는 VM 에 있거든. 컨테이너로 올릴 수 없어. (0) | 2025.03.10 |
4개 비교함 (0) | 2025.03.06 |
웹 기반 깃티 젠킨스 비교 (0) | 2025.03.06 |
깃티 젠킨스 비교 (0) | 2025.03.06 |