Version: Unity 6.0 (6000.0)
언어 : 한국어
종속성 및 해결
내장 종속성

해결 및 충돌

프로젝트 매니페스트에 패키지를 추가하면 Unity는 해당 패키지를 프로젝트의 종속성(직접 종속성)으로 간주합니다. 하지만 패키지에는 다른 패키지에 대한 종속성이 있을 수도 있으며, 이는 해당 패키지가 필요한 프로젝트에서 간접 종속성을 생성합니다.

대부분의 프로젝트에서는 게임과 앱을 개발하기 위해 두 개 이상의 패키지가 필요하므로, 패키지 관리자는 레지스트리에서 가져올 요청된 모든 패키지 버전(직접 또는 간접)을 평가하고, 설치할 패키지 버전을 결정해야 합니다. 이를 위해 프로젝트의 모든 직접 및 간접 종속성을 충족하는 패키지 집합을 계산합니다. 프로젝트 종속성부터 시작하여 각 간접 종속성을 재귀적으로 탐구하고 모든 종속성 정보를 수집한 다음 충돌 없이 종속성 요구 사항을 충족하는 패키지 집합을 선택합니다. 예를 들어 이 종속성 그래프는 4개의 직접 종속성과 모든 간접 종속성이 있는 프로젝트를 나타냅니다.

프로젝트의 직접 및 간접 패키지 종속성이 나와 있는 그래프
프로젝트의 직접 및 간접 패키지 종속성이 나와 있는 그래프

이 예제에서 다음을 참고하십시오.

  • 하늘색 노드는 프로젝트의 직접 종속성을 나타냅니다.
  • 진한 파란색 노드는 이 프로젝트의 간접 종속성과 동일한 패키지 및 버전을 나타냅니다.
  • 빨간색 노드는 동일한 패키지의 두 가지 다른 버전, 즉 충돌을 나타냅니다.

참고: 버전으로 선언된 패키지 종속성만 해결해야 합니다. 패키지 관리자는 다른 소스에서 설치된 패키지(예: 포함 패키지, 로컬 경로로 선언된 종속성, Git URL 및 버전 기반 종속성에 포함된 패키지)를 선택합니다.

최고의 솔루션 선택

프로젝트 매니페스트에 정의된 패키지 집합에 따라 가능한 모든 패키지 조합을 평가하는 데는 오랜 시간이 걸릴 수 있습니다. 프로젝트는 잠재적으로 수백 개의 패키지에 종속되고, 각 패키지는 수백 개의 다른 패키지에 종속되고 대부분은 서로 다른 버전을 필요로 할 수 있습니다.

잠금 파일 및 resolutionStrategy

가장 효율적인 솔루션을 제공하기 위해 패키지 관리자는 잠금 파일에서 추적하여 이전에 사용한 패키지 버전의 우선 순위를 지정합니다. 이는 동일한 입력을 사용하는 후속 종속성 해결과 동일한 출력을 보장합니다. 또한 패키지 다운로드, 추출 또는 복사와 같이 시간이 많이 소요되는 작업을 최소화합니다.

패키지 관리자는 잠긴 패키지만 포함하는 솔루션을 찾지 못하는 경우가 있습니다. 이 경우 패키지 관리자는 위험이 가장 적은 업그레이드가 있는 솔루션을 사용합니다. 기본적으로 패치 업그레이드는 사소한 업그레이드 또는 주요 업그레이드보다 우선하고, 사소한 업그레이드는 주요 업그레이드보다 우선합니다. 그러나 resolutionStrategy 프로퍼티가 포함된 더 높은 버전을 고려하여 패키지 관리자의 적극성을 커스터마이즈할 수 있습니다.

예제

이 예제에는 요청된 다음 패키지의 여러 버전이 있습니다.

  • burst@1.2.2(두 번) 및 burst@1.3.0-preview.3
  • collections@0.5.1-preview.11collections@0.5.2-preview.8
  • jobs@0.2.4-preview.11(두 번) 및 jobs@0.2.5-preview.20

패키지 관리자는 직접 및 간접 종속성 집합을 사용하여 버스트 패키지(burst@1.3.0-preview.3)의 가장 높은 버전을 선택합니다. 이는 collections@0.5.2-preview.8 패키지의 종속성을 충족합니다.

종속성 그래프에서 파란색 노드는 패키지 관리자가 선택한 버전을 나타냅니다.
종속성 그래프에서 파란색 노드는 패키지 관리자가 선택한 버전을 나타냅니다.




  • Unity 2019.4 NewIn20194에 새 패키지 종속성 솔버(SAT) 추가


종속성 및 해결
내장 종속성