버전 관리에 Nuget PACKAGE 폴더를 포함시켜야합니까?


68

나는 알고 싶습니다

C # 또는 VB.NET 프로젝트에서는 PACKAGE 폴더 (nupkg 파일 및 기타 컨텐츠가 포함 된 프로젝트 루트에 작성된 너겟 패키지 폴더)를 소스 제어 저장소 (예 : Git)에 포함시켜야합니다.


이 파일들은 코드의 일부이고 프로젝트가 파일 없이는 빌드되지 않기 때문에 물론 그렇습니다 .
Sharky

나는 시간이 지남에 따라 비슷한 질문을했다. 답변을
찾으실

왜 Maven 세계에서 아무도 "버전 제어에 타사 라이브러리를 포함시켜야합니까?"라고 묻지 않습니다. 확실하지는 않지만 libs를 커밋하지 않는 확실한 반대 주장을 찾으십시오.
Hoàng Long

답변:


28

많은 시간이 지났고 NuGet이 변경되었으므로 여기에 새로운 답변이 있습니다.

NuGet은 더 이상 소스 구조 안에 패키지 폴더를 만들지 않습니다. 대신 사용자 디렉토리 %HOME%\.nuget\packages에는 다운로드하는 모든 패키지를 저장하는 프로젝트가 있으며, 프로젝트는이 패키지를 참조합니다.

요즘 간단한 대답은 '아니요'입니다. 패키지가 사라질 까봐 걱정된다면 별도로 백업 할 로컬 NuGet 미러를 만들어야합니다.


6
VS2015 (VS2017이이 답변을 작성하기 3 일 전에 릴리스되었음을 고려하십시오)에 있으며 패키지 폴더가 내 솔루션 루트에 있습니다. NuGet이 언제 어떻게 바뀌 었는지 궁금합니다.
Teejay

NuGet은 VS2015 기간 중에 언젠가 대역 외 릴리스 된 버전 3으로 변경되었습니다.
Sebastian Redl

방금 업무용 컴퓨터를 확인했는데 패키지가 언급 된 곳입니다. 그러나 내 가정용 컴퓨터에서는 프로젝트 디렉토리에 있습니다. 둘 다 VS2015 (전문 @ 직장, 커뮤니티 @ 집)에 있으며 집은 최신 설치입니다 ... 이상합니다.
Teejay

12
지난 주 VS 2017을 설치하고 어제 새 프로젝트를 만들었으며 프로젝트에 패키지 디렉토리가 있습니다.
Jeremy

2
CI를 위해 무엇을합니까? 당신은 그것을 모든 너겟 패키지를 반복해서 다운로드합니까? (TBH : 저 자신은 제 의견이 무엇인지 매우 불분명합니다)
Tomer W

50

따라 다릅니다.

체크 아웃 바트 반 Ingen Schenau의 답변을 그것을 무시 할 수 있는지 결정하기 위해 packages모든 폴더에 있습니다.

기본적으로 : 예, NuGet은 packages폴더를 무시할 수 있도록 설계되었으며 NuGet은 인터넷이없는 경우 모든 것을 인터넷에서 가져옵니다.

그러나 그것을 무시해야합니까? 나는 말한다 : 그것은 달려있다.
IMO "패키지 리포지토리를 사용할 수없는 경우 작업을 계속할 수 있습니까?"라는 질문입니다 (일시적으로 또는 영구적으로).

내 개인 OSS 프로젝트의 경우 packages폴더가 모두 무시됩니다.
nuget.org가 오프라인 상태 일 때까지 기다렸다가 하루 더 계속하겠습니다.

그러나 그것은 직장에서 다른 것입니다.
물론 일부 컴퓨터에는 여전히 패키지가 있지만 빌드 서버가 nuget.org에 도달 할 수 없기 때문에 빌드가 중단 될 때 번거로운 공간을 절약하고 있습니까?

우리는 공간이 저렴하고 번거 로움을 원하지 않기로 결정했기 때문에 packages폴더를 소스 제어에 커밋하고 있습니다.


1
nuget.org를 얼마나 자주 사용할 수 없습니까?
Bartosz

4
아마 자주는 아닙니다. 그러나 "오프라인"대신 "도달 할 수 없음"이라고 말했을 수도 있습니다. 몇 년 전, 굴삭기가 실수로 건물에 인터넷 케이블을 절단 한 사고가있었습니다. 하루 이상 수리를했습니다. 우리가 nuget.org에 의존했다면 프로젝트를 구축 할 수 없었을 것입니다. (예, 현재 NuGet은 패키지를 로컬로 캐시하지만 그 당시에는 그렇지 않습니다)
Christian Specht

패키지 폴더를 체크인하지 않으면 패키지 복원 중에 패키지를 검색하는 데 대부분의 빌드 시간이 소요되므로 빌드 시간이 훨씬 길어집니다.
AaronLS

29

소스 제어 리포지토리에 들어가는 기본 규칙은 프로젝트를 빌드, 테스트, 배포 및 실행하는 데 필요하고 이미 리포지토리에있는 항목에서 생성 할 수없는 프로젝트와 관련된 모든 것을 저장한다는 것입니다. .

다시 말해, 당신의 능력에 영향을 미치지 않고 PACKAGE 폴더와 그 내용물을 버릴 수 있다면 (빌드는 더 오래 걸릴 수 있지만, 따로 따로 설치할 필요는 없습니다) 저장소에서 안전하게 제거하십시오.
폴더에 다운로드하는 데 시간이 오래 걸리거나 사용할 수없는 타사 패키지가 포함되어 있으면 저장소에 패키지를 추가해야 할 수 있습니다.


20
제 3 자 프로젝트가 제거되거나 호스팅하는 사이트가 사라진 경우를 대비하여 프로젝트에 사용 된 모든 타사 코드 버전을 안전하게 저장해야한다고 덧붙입니다. 버전 관리 저장소에 있습니다. . 또한 필요한 경우 해당 코드의 이전 버전으로 롤백 할 수도 있습니다.
굽은
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.