C#은 마이크로소프트가 만든 정적 타입 객체 지향 언어로, 오픈 소스이자 크로스 플랫폼인 .NET 위에서 동작합니다. 콘솔 도구, 웹 API, 데스크톱 앱, 게임(Unity), 클라우드 서비스까지 같은 언어와 같은 도구로 만들 수 있습니다. 이 장에서는 .NET SDK를 설치하고, 첫 프로젝트를 만들어 실행하고, 프로젝트 파일이 무엇을 담는지 살펴본 뒤 편집기를 준비합니다.
.NET SDK 설치
C# 코드를 빌드하려면 .NET SDK가 필요합니다. SDK에는 컴파일러, dotnet 명령줄 도구, 기본 라이브러리, 런타임이 모두 들어 있습니다. 실행만 하는 컴퓨터에는 런타임만 있어도 되지만, 개발하는 컴퓨터에는 SDK를 설치합니다.
- Windows · macOS · Linux 설치 파일은 .NET 내려받기 쪽에서 받습니다. 특별한 이유가 없다면 장기 지원(LTS) 버전을 고르는 것이 무난합니다.
- Windows에서는
winget, macOS에서는 Homebrew, Linux에서는 배포판의 패키지 관리자나 마이크로소프트 패키지 저장소로도 설치할 수 있습니다. - Visual Studio를 설치하면서 .NET 개발 워크로드를 고르면 SDK가 함께 설치됩니다.
설치가 끝나면 새 터미널을 열고 다음 명령으로 확인합니다.
dotnet --version
dotnet --list-sdks
dotnet --info
dotnet --version은 지금 쓰이는 SDK 버전을, dotnet --list-sdks는 설치된 모든 SDK를 보여 줍니다. SDK는 여러 버전을 나란히 설치할 수 있고, 각 프로젝트는 자기가 대상으로 하는 버전을 프로젝트 파일에 적습니다.
첫 프로젝트 만들기
dotnet new는 템플릿으로 프로젝트를 만듭니다. 콘솔 앱 템플릿의 이름은 console입니다.
dotnet new console -o HelloApp
cd HelloApp
dotnet run
-o HelloApp은 HelloApp 폴더를 만들고 그 안에 프로젝트를 생성하라는 뜻입니다. 폴더에는 HelloApp.csproj와 Program.cs 두 파일이 생기고, dotnet run을 실행하면 화면에 Hello, World!가 출력됩니다. Program.cs의 내용은 한 줄뿐입니다.
// Program.cs
Console.WriteLine("Hello, World!");
클래스나 Main 메서드가 보이지 않는 이유는 최상위 문(top-level statements) 덕분입니다. 컴파일러가 이 파일의 문장들을 감싸는 진입점을 자동으로 만들어 줍니다. 명령줄 인수는 미리 정의된 args 변수로 받을 수 있습니다.
if (args.Length == 0)
{
Console.WriteLine("사용법: dotnet run -- <이름>");
return;
}
var name = args[0];
Console.WriteLine($"안녕하세요, {name}님! 오늘은 {DateTime.Now:yyyy-MM-dd}입니다.");
dotnet run -- 철수처럼 -- 뒤에 적은 값이 프로그램에 전달됩니다. -- 앞의 옵션은 dotnet run 자신이 받습니다.
프로젝트 파일(.csproj)
.csproj는 MSBuild 형식의 XML 파일로, 무엇을 어떻게 빌드할지 정합니다. 템플릿이 만든 파일은 대략 다음과 같습니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
SDK 스타일 프로젝트는 폴더 안의 .cs 파일을 자동으로 모두 포함하므로, 새 파일을 만들 때마다 프로젝트 파일을 고칠 필요가 없습니다.
빌드와 실행
자주 쓰는 명령은 다음과 같습니다.
dotnet build # Debug 구성으로 빌드
dotnet build -c Release # Release 구성으로 빌드
dotnet run # 빌드한 뒤 실행
dotnet watch # 파일이 바뀌면 다시 빌드하고 실행
dotnet clean # 빌드 결과 지우기
빌드 결과는 bin/Debug/<대상 프레임워크>/ 아래에, 중간 파일은 obj/ 아래에 생깁니다. 두 폴더는 언제든 다시 만들 수 있으므로 버전 관리에서 제외합니다. dotnet new gitignore를 실행하면 .NET용 .gitignore 파일이 만들어집니다.
편집기 준비
C#은 편집기 지원이 강력한 언어입니다. 다음 중 하나를 고르면 자동 완성, 리팩터링, 디버깅을 바로 쓸 수 있습니다.
- Visual Studio: Windows용 통합 개발 환경으로, 디버거와 프로파일러가 가장 풍부합니다.
- Visual Studio Code: 가벼운 편집기에 C# Dev Kit 확장을 설치하면 솔루션 탐색기, 테스트 탐색기, 디버거를 쓸 수 있습니다.
- JetBrains Rider: Windows · macOS · Linux에서 같은 경험을 주는 크로스 플랫폼 IDE입니다.
어떤 편집기를 쓰든 코드 스타일은 dotnet format으로 맞출 수 있습니다. 저장소 루트에 .editorconfig를 두면 들여쓰기, 이름 규칙, 경고 수준을 팀 전체가 같이 쓸 수 있습니다.
정리
- C# 개발에는 .NET SDK가 필요하고,
dotnet --version으로 설치를 확인합니다. dotnet new console로 프로젝트를 만들고 dotnet run으로 실행합니다.Program.cs의 최상위 문이 프로그램의 진입점이 되며, 인수는 args로 받습니다..csproj는 대상 프레임워크, 출력 형식, 컴파일러 옵션을 정하는 MSBuild 파일입니다.- Visual Studio, VS Code(C# Dev Kit), Rider 중 편한 편집기를 고르고
dotnet format으로 스타일을 맞춥니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.