2014-04-09 2 views
0

로컬 피드가 선택된 디렉토리에있는 NuGet 패키지를 사용하고 있습니다. RepositoryDir이라고 부르 자. 내 자신의 빌드 결과를 여기에 누젠 패키지로 밀어 넣고 있습니다.빈 "packages"디렉토리가있는 NuGet 업데이트

 
1. Consider two solutions A and B. B needs A package to build. 
2. Build solution A and push A.1.1.0.0.nupkg to RepositoryDir with nuget.exe 
3. Clear contents of packages folder for B solution 
(clear B/packages dir, A.1.0.0.0.nupkg for example). 4. Update A library in B solution.
nuget.exe update B.sln -Source ../RepositoryDir 5. Install A library in B solution
nuget.exe restore B.sln -Source ../RepositoryDir

내가 3이 가정이 이유로 인해 인 TeamCity 서버에있을 것입니다 : 또한 나는 (nuget 패키지로) 서로 참조하는 여러 솔루션을 내가 달성하기 위해 필요한 것은

그런 상황이 있어요 빈 패키지 디렉토리는 업데이트 중에 제공됩니다.

Looking for installed packages in '..\packages'

이 패키지 디렉토리에서의 더 이전 버전이 없기 때문에 nuget는 B 솔루션에 대한 라이브러리를 업데이트하지 않는다는 것을 의미 : 작업에서이 제도를 차단 무엇

실제로 말을 nuget 업데이트입니다. 왜 그렇게 일하는거야? 나는 nuget이 packages.config를보고 여기에서 갱신 할 라이브러리를 찾을 것이라고 생각했다.

B 빌드 중에 항상 최신 버전의 A를 다운로드 할 수 있습니까?

답변

1

NuGet은 패키지를 업데이트 할 때 이전 패키지를 제거한 다음 새 패키지를 설치합니다. 이전 패키지를 제거하려면 패키지에서 참조가 포함 된 것과 같은 정보가 필요하므로 프로젝트의 모든 것을 제거 할 수 있습니다. 이 정보는 packages.config 파일에서 사용할 수 없습니다. Visual Studio 내에서 NuGet을 사용하여 패키지를 업데이트하거나 명령 줄에서 "nuget.exe update"를 사용할 때 마찬가지입니다.

따라서 패키지를 업데이트하기 전에 B가 실행되는 패키지를 복원하여 목록에서 순서를 변경해야합니다.

+0

감사합니다. 그래서 ... 사실 업데이트 전에 복구를 수행 할 때 RepositoryDir에 A.1.0.0.0.nupkg가 있어야합니까? TeamCity에서 구축 할 때 나는 최신 버전의 A 만 사용 가능하다고 생각하므로 불가능합니다. – bubor

+0

복원은 프로젝트에 현재 설치된 NuGet 패키지를 풀 (A.1.0.0.0.nupkg)합니다. 그런 다음 누 그트 업데이트가 A.1.1.0.0.nupkg를 설치합니다. –

관련 문제