macOS에 .NET 설치

이 문서에서는 macOS에 .NET을 설치하는 방법을 알아봅니다. .NET은 런타임과 SDK로 구성됩니다. 런타임은 .NET 앱을 실행하는 데 사용되며 앱에 포함될 수도 있고 포함되지 않을 수도 있습니다. SDK는 .NET 앱과 라이브러리를 만드는 데 사용됩니다. .NET 런타임은 항상 SDK와 함께 설치됩니다.

.NET의 최신 버전은 8입니다.

지원되는 릴리스

지원되는 릴리스에는 LTS(장기 지원) 릴리스와 STS(표준 기간 지원) 릴리스의 두 가지 형식이 있습니다. 모든 릴리스의 품질은 동일합니다. 유일한 차이점은 지원 기간입니다. LTS 릴리스는 3년 동안 무료 지원과 패치를 가져옵니다. STS 릴리스는 18개월 동안 무료 지원 및 패치를 받습니다. 자세한 내용은 .NET 지원 정책을 참조하세요.

다음 표는 현재 지원되는 .NET 릴리스와 해당 릴리스가 지원되는 macOS 버전의 목록입니다.

운영 체제 .NET 8(LTS) .NET 7(STS) .NET 6(LTS)
macOS 14.0 "Sonoma" ✔️ 8.0 ✔️ 7.0 ✔️ 6.0
macOS 13.0 "Ventura" ✔️ 8.0 ✔️ 7.0 ✔️ 6.0
macOS 12.0 "Monterey" ✔️ 8.0 ✔️ 7.0 ✔️ 6.0
macOS 11.0 “Big Sur” ✔️ 7.0 ✔️ 6.0
macOS 10.15 “Catalina” ✔️ 7.0 ✔️ 6.0

.NET 버전 및 해당 지원 수명 주기의 전체 목록은 .NET 지원 정책을 참조하세요.

지원되지 않는 릴리스

다음 .NET 버전은 ❌ 더 이상 지원되지 않습니다.

  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

런타임 정보

런타임은 .NET으로 만든 앱을 실행하는 데 사용됩니다. 앱 작성자는 앱을 게시할 때 앱과 함께 런타임을 포함할 수 있습니다. 앱 작성자가 런타임을 포함하지 않는 경우, 사용자가 런타임을 설치할 수 있습니다.

macOS에 설치할 수 있는 두 가지 런타임이 있습니다.

  • ‘ASP.NET Core 런타임’
    ASP.NET Core 앱을 실행합니다. .NET 런타임을 포함합니다.

  • ‘.NET 런타임’
    이 런타임은 가장 간단한 런타임이며 다른 런타임을 포함하지 않습니다. .NET 앱과의 최상의 호환성을 위해 ‘ASP.NET Core 런타임’을 설치하는 것이 좋습니다.

SDK 정보

SDK는 .NET 앱과 라이브러리를 빌드하고 게시하는 데 사용됩니다. SDK를 설치하면 ASP.NET Core 및 .NET Core의 두 가지 런타임이 모두 포함됩니다.

공증

macOS Catalina(버전10.15)부터, 2019년 6월 1일 이후에 빌드되어 개발자 ID로 배포되는 모든 소프트웨어는 공증을 받아야 합니다. 이 요구 사항은 .NET 런타임, .NET SDK, .NET으로 만든 소프트웨어에 적용됩니다.

.NET용 런타임 및 SDK 설치 프로그램은 2020년 2월 18일부터 공증되었습니다. 그 전에 릴리스된 버전은 공증되지 않았습니다. 공증되지 않은 앱을 실행하면 다음 이미지와 비슷한 오류가 표시됩니다.

macOS Catalina 공증 경고

공증 요구 사항이 적용됨에 따라 .NET(및 .NET 앱)에 미치는 영향에 대해 자세히 알아보려면 macOS Catalina 공증 관련 사항을 참조하세요.

libgdiplus

System.Drawing.Common 어셈블리를 사용하는 .NET 애플리케이션을 설치하려면 libgdiplus가 필요합니다.

libgdiplus를 획득하는 쉬운 방법은 macOS용 Homebrew("brew") 패키지 관리자를 사용하는 것입니다. brew를 설치한 후 터미널(명령) 프롬프트에서 다음 명령을 실행하여 libgdiplus를 설치합니다.

brew update
brew install mono-libgdiplus

자동화된 설치

macOS에는 .NET을 설치하는 데 사용할 수 있는 독립 실행형 설치 관리자가 있습니다.

수동 설치

.NET용 macOS 설치 관리자 대신 SDK와 런타임을 다운로드하여 수동으로 설치할 수 있습니다. 수동 설치는 일반적으로 연속 통합 테스트의 일부로 수행됩니다. 개발자 또는 사용자의 경우 일반적으로 설치 관리자를 사용하는 것이 좋습니다.

다음 사이트 중 한 곳에서 SDK 또는 런타임의 이진 릴리스를 다운로드합니다. .NET SDK에는 해당 런타임이 포함됩니다.

다운로드한 파일의 압축을 풀고 export 명령을 사용하여 압축을 푼 폴더의 위치로 DOTNET_ROOT를 설정한 다음 .NET이 PATH에 있는지 확인합니다. DOTNET_ROOT를 내보내면 터미널에서 .NET CLI 명령을 사용할 수 있습니다. .NET 환경 변수에 대한 자세한 내용은 .NET SDK 및 CLI 환경 변수를 참조하세요.

여러 버전의 .NET을 나란히 공존하는 동일한 폴더로 추출할 수 있습니다.

예시

다음 명령은 Bash를 사용하여 환경 변수 DOTNET_ROOT를 현재 작업 디렉터리로 설정하고 다음으로 .dotnet으로 설정합니다. 디렉터리가 없을 경우 만듭니다. DOTNET_FILE 환경 변수는 설치하려는 .NET 이진 릴리스의 파일 이름입니다. 이 파일은 DOTNET_ROOT 디렉터리로 추출됩니다. DOTNET_ROOT 디렉터리와 해당 tools 하위 디렉터리가 모두 PATH 환경 변수에 추가됩니다.

Important

이러한 명령을 실행하는 경우 DOTNET_FILE 값을 다운로드한 .NET 이진 파일의 이름으로 변경해야 합니다.

DOTNET_FILE=dotnet-sdk-8.0.100-osx-x64.tar.gz
export DOTNET_ROOT=$(pwd)/.dotnet

mkdir -p "$DOTNET_ROOT" && tar zxf "$DOTNET_FILE" -C "$DOTNET_ROOT"

export PATH=$PATH:$DOTNET_ROOT

동일한 폴더에 둘 이상의 .NET 버전을 설치할 수 있습니다.

HOME 변수 또는 ~ 경로로 식별되는 홈 디렉터리에 .NET을 설치할 수도 있습니다.

export DOTNET_ROOT=$HOME/.dotnet

다운로드한 이진 파일 확인

설치 프로그램을 다운로드한 후 파일이 변경되거나 손상되지 않았는지 확인합니다. 컴퓨터에서 체크섬을 확인한 다음 다운로드 웹 사이트에 보고된 내용과 비교할 수 있습니다.

공식 다운로드 페이지에서 설치 프로그램이나 이진 파일을 다운로드하면 해당 파일의 체크섬이 표시됩니다. 체크섬 값을 클립보드에 복사하려면 복사 단추를 선택합니다.

검사sum이 있는 .NET 다운로드 페이지

sha512sum 명령을 사용하여 다운로드한 파일의 체크섬을 인쇄합니다. 예를 들어 다음 명령은 dotnet-sdk-8.0.100-linux-x64.tar.gz 파일의 체크섬을 보고합니다.

$ sha512sum dotnet-sdk-8.0.100-linux-x64.tar.gz
13905ea20191e70baeba50b0e9bbe5f752a7c34587878ee104744f9fb453bfe439994d38969722bdae7f60ee047d75dda8636f3ab62659450e9cd4024f38b2a5  dotnet-sdk-8.0.100-linux-x64.tar.gz

체크섬을 다운로드 사이트에서 제공한 값과 비교합니다.

Important

이러한 예제에서는 Linux 파일이 표시되지만 이 정보는 macOS에도 동일하게 적용됩니다.

체크섬 파일을 사용하여 유효성 검사

.NET 릴리스 정보에는 다운로드한 파일의 유효성을 검사하는 데 사용할 수 있는 체크섬 파일에 대한 링크가 포함되어 있습니다. 다음 단계에서는 체크섬 파일을 다운로드하고 .NET 설치 이진 파일의 유효성을 검사하는 방법을 설명합니다.

  1. GitHub(https://github.com/dotnet/core/tree/main/release-notes/8.0)의 .NET 8 릴리스 정보 페이지에는 릴리스라는 섹션이 포함되어 있습니다. 해당 섹션의 표는 각 .NET 8 릴리스에 대한 다운로드 및 체크섬 파일로 연결됩니다.

    .NET용 github 릴리스 정보 버전 테이블

  2. 다운로드한 .NET 버전에 대한 링크를 선택합니다. 이전 섹션에서는 .NET 8.0.0 릴리스에 있는 .NET SDK 8.0.100을 사용했습니다.

  3. 릴리스 페이지에서 .NET 런타임 및 .NET SDK 버전과 체크섬 파일에 대한 링크를 볼 수 있습니다.

    .NET에 대한 검사sums가 있는 다운로드 테이블

  4. 체크섬 파일에 대한 링크를 복사합니다.

  5. 다음 스크립트를 사용하되 링크를 바꿔 적절한 체크섬 파일을 다운로드합니다.

    curl -O https://dotnetcli.blob.core.windows.net/dotnet/checksums/8.0.0-sha.txt
    
  6. 체크섬 파일과 .NET 릴리스 파일을 모두 동일한 디렉터리에 다운로드한 상태에서 sha512sum -c {file} --ignore-missing 명령을 사용하여 다운로드한 파일의 유효성을 검사합니다.

    유효성 검사를 통과하면 확인 상태로 인쇄된 파일이 표시됩니다.

    $ sha512sum -c 8.0.0-sha.txt --ignore-missing
    dotnet-sdk-8.0.100-linux-x64.tar.gz: OK
    

    FAILED로 표시된 파일이 표시되면 다운로드한 파일이 유효하지 않으므로 사용하면 안 됩니다.

    $ sha512sum -c 8.0.0-sha.txt --ignore-missing
    dotnet-sdk-8.0.100-linux-x64.tar.gz: FAILED
    sha512sum: WARNING: 1 computed checksum did NOT match
    sha512sum: 8.0.0-sha.txt: no file was verified
    

시스템 전체 환경 변수 설정

수동 설치 예제 섹션의 지침을 사용한 경우 설정된 변수는 현재 터미널 세션에만 적용됩니다. 셸 프로필에 추가합니다. macOS에서는 다양한 셸을 사용할 수 있으며 각 셸에는 서로 다른 프로필이 있습니다. 예시:

  • Bash 셸: ~/.profile, /etc/profile
  • Korn 셸: ~/.kshrc 또는 .profile
  • Z 셸: ~/.zshrc 또는 .zprofile

셸 프로필에서 다음 두 환경 변수를 설정합니다.

  • DOTNET_ROOT

    이 변수는 .NET이 설치된 폴더(예: $HOME/.dotnet)로 설정됩니다.

    export DOTNET_ROOT=$HOME/.dotnet
    
  • PATH

    이 변수에는 DOTNET_ROOT 폴더와 DOTNET_ROOT/tools 폴더가 모두 포함되어야 합니다.

    export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
    

Arm 기반 Mac

다음 섹션에서는 Arm 기반 Mac에 .NET을 설치할 때 고려해야 할 사항에 대해 설명합니다.

지원되는 내용

다음 표에서는 Arm 기반 Mac에서 지원되는 .NET 버전을 설명합니다.

.NET 버전 아키텍처 SDK) 런타임 경로 충돌
8 Arm64 아니요
8 X64
7 Arm64
7 X64
6 Arm64
6 X64

.NET 6부터 .NET SDK의 x64 및 Arm64 버전은 서로 독립적으로 존재합니다. 새 버전이 출시되면 각 설치를 업그레이드해야 합니다.

경로 차이

Arm 기반 Mac에서는 모든 Arm64 버전의 .NET이 /usr/local/share/dotnet/ 폴더에 설치됩니다. 그러나 x64 버전의 .NET SDK를 설치하면 /usr/local/share/dotnet/x64/dotnet/ 폴더에 설치됩니다.

경로 충돌

이전 섹션에서 설명한 대로 .NET 6부터 x64 .NET SDK는 자체 디렉터리에 설치됩니다. 이렇게 하면 Arm64 및 x64 버전의 .NET SDK가 동일한 컴퓨터에 존재할 수 있습니다. 그러나 .NET 6 이전의 x64 SDK는 지원되지 않으며 Arm64 버전과 동일한 위치인 /usr/local/share/dotnet/ 폴더에 설치됩니다. 지원되지 않는 x64 SDK를 설치하려는 경우 먼저 Arm64 버전을 제거해야 합니다. 반대의 경우도 마찬가지입니다. Arm64 버전을 설치하려면 지원되지 않는 x64 SDK를 제거해야 합니다.

경로 변수

.NET 6 SDK의 x64 및 Arm64 버전이 모두 설치되어 있는 경우 .NET을 시스템 경로에 추가하는 환경 변수(예: PATH 변수)를 변경해야 할 수 있습니다. 또한 DOTNET_ROOT 환경 변수를 사용하는 도구도 적절한 .NET 6 SDK 설치 폴더를 가리키도록 업데이트해야 합니다.

Mac용 Visual Studio를 사용하여 설치

Mac용 Visual Studio는 .NET 워크로드가 선택된 경우 .NET SDK를 설치합니다. macOS에서 .NET 개발을 시작하려면 Mac용 Visual Studio 2022 설치를 참조하세요.

Important

Mac용 Visual Studio 사용 중지되고 있습니다. 자세한 내용은 Mac용 Visual Studio 어떻게 됩니까?를 참조하세요.

.NET SDK 버전 Visual Studio 버전
8.0 Mac용 Visual Studio 2022 17.6.1 이상. (미리 보기 기능으로만 사용 가능)
7.0 Mac용 Visual Studio 2022 17.4 이상
6.0 Mac용 Visual Studio 2022 17.0 이상.

.NET 워크로드가 선택된 Mac용 macOS Visual Studio 2022.

Important

Microsoft는 Mac용 Visual Studio의 사용 중지를 발표했습니다. Mac용 Visual Studio는 2024년 8월 31일부터 더 이상 지원되지 않습니다. 대안은 다음과 같습니다.

자세한 내용은 Mac용 Visual Studio 사용 중지 공지를 참조하세요.

Visual Studio Code와 함께 설치

Visual Studio Code는 데스크톱에서 실행되는 강력한 경량 소스 코드 편집기입니다. Visual Studio Code는 Windows, macOS 및 Linux에서 사용할 수 있습니다.

Visual Studio Code에 Visual Studio처럼 자동화된 .NET 설치 관리자가 포함되지 않은 경우 간편하게 .NET 지원을 추가할 수 있습니다.

  1. Visual Studio Code를 다운로드하여 설치합니다.
  2. .NET SDK를 다운로드하여 설치합니다.
  3. Visual Studio Code Marketplace에서 C# 확장을 설치합니다.

배시 자동화를 사용하여 설치

dotnet-install 스크립트는 자동화 및 런타임의 관리자가 아닌 일반 설치를 수행하는 데 사용됩니다. 스크립트는 dotnet-install 스크립트 참조 페이지에서 다운로드할 수 있습니다.

스크립트는 기본적으로 최신 LTS(장기 지원) 버전(.NET 8)을 설치합니다. channel 스위치를 지정하여 특정 릴리스를 선택할 수 있습니다. 런타임을 설치하려면 runtime 스위치를 포함합니다. 포함하지 않을 경우 스크립트가 SDK를 설치합니다.

다음 명령은 최대의 호환성을 위해 ASP.NET Core 런타임을 설치합니다. ASP.NET Core 런타임에는 표준 .NET 런타임도 포함되어 있습니다.

./dotnet-install.sh --channel 8.0 --runtime aspnetcore

Docker

컨테이너는 호스트 시스템의 나머지 부분으로부터 애플리케이션을 격리하는 경량 방식을 제공합니다. 동일한 머신에 있는 컨테이너는 커널만 공유하고 애플리케이션에 주어진 리소스를 사용합니다.

.NET은 Docker 컨테이너에서 실행할 수 있습니다. 공식 .NET Docker 이미지는 MCR(Microsoft Container Registry)에 게시되며 Microsoft .NET Docker Hub 리포지토리에서 찾을 수 있습니다. 각 리포지토리에는 사용할 수 있는 .NET(SDK 또는 Runtime)과 OS가 다양하게 조합된 이미지가 포함되어 있습니다.

Microsoft는 특정 시나리오를 위한 맞춤형 이미지를 제공합니다. 예를 들어 ASP.NET Core 리포지토리는 프로덕션에서 ASP.NET Core 앱을 실행하기 위해 빌드된 이미지를 제공합니다.

Docker 컨테이너에서 .NET 사용에 대한 자세한 내용은 .NET 및 Docker 소개Samples(샘플)를 참조하세요.

다음 단계