2012-04-03 5 views
3

NuGet Package Restore NuGet을 소스 제어 (예 : TFS)와 결합하는 올바른 방법 인 것 같습니다 (예 : this answer). 첫 번째 코멘트는 this closed question입니다. NuGet Package Restore를 사용하면 소스 제어에서 가져온 솔루션을 다른 dev '시스템에서 빌드하여 필요한 NuGet 패키지를 자동으로 가져올 수 있습니다.NuGet 패키지 복원 * NuGet.targets MsBuild 작업 가져 오기 솔루션의 모든 프로젝트를 변경하지 않고

NuGet 패키지 복원을 솔루션에 추가하려면 솔루션을 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 복원 사용을 선택하십시오. "NuGet.exe 및 NuGet.targets MsBuild 파일을 포함하는 .nuget 솔루션 폴더가 추가되었으며 솔루션의 모든 프로젝트가 변경되어 NuGet.targets MsBuild 작업을 가져 왔습니다." (견적에서 http://docs.nuget.org/docs/Workflows/Using-NuGet-without-committing-packages). 그러나 내가 연구하고있는 솔루션의 프로젝트 중 일부는 유틸리티 프로젝트이며 다른 솔루션과 다른 개발자가 공유합니다. 아니요은 NuGet에서 처리하는 참조가 필요합니다.

어떻게 NuGet 패키지 복원을 활성화하지만 NuGet 빌드 작업 설정에서 솔루션의 특정 프로젝트를 배제합니까?

답변

4

NuGet 패키지 복원에는 몇 가지 제한 사항이 있으며 특정 프로젝트에만 제한 될 수 없습니다. 이 가능하게 할 기존 NuGet 작업 항목 있습니다 : #1812 - Enable Package Restore - Selective Projects

댓글하십시오/투표를 그 위에이 현재 백 로그 이후 우선 순위를 범프는.

참고 : 표면에서 .csproj 파일이 NuGet 패키지 복원을 해제 지원하는 속성이 나타나지만 인해 또 다른 문제로, 그것은 다시 켜기 유지 : NuGet command line forces package restore

+0

1 : 내 buildserver에

나는이 (쉘) 조각을 사용합니다. 유익한 답변 주셔서 감사합니다. – dumbledad

+0

Alexandre, 그 작업 항목에서 한 가지 방법은 솔루션에서 NuGet 패키지 복원을 실행 한 다음 이전 버전으로 변경하지 않으려는 프로젝트를 수동으로 되돌리는 것입니다. 이것은 좋은 해결 방법입니까? – dumbledad

+1

응답에서 추가 한 메모로 인해 지금은 작동하지 않을 것이라고 생각합니다. 특별히 [이 호] (http://nuget.codeplex.com/workitem/1998), NuGet이 초기화 될 때 EnablePackageRestore가 호출되기 때문에 모든 프로젝트에서 복원이 전환됩니다. –

1

당신은에서 스크립트를 실행할 수 있습니다 모든 packages.config 파일을 살펴본 후 해당 내용을 다운로드하는 첫 번째 프로젝트의 PreBuild 단계. 당신은 당신의 솔루션의 모든 packages.config에 대한 귀하의 $(SolutionDir)에서

.nuget/nuget.exe install "....\packages.config" -o "packages" 

를 호출해야합니다.

이것은 실제로 프로젝트에 설치되지 않은 솔루션 레벨 패키지를 다운로드하기 때문에 표준 솔루션보다 더 잘 작동합니다. 투표 제안에 대해

find -iname packages.config -print0 | xargs -0 -ti mono --runtime=v4.0.30319 .nuget/nuget.exe install {} -o "packages" 
관련 문제