[nuget] NuGet 패키지 복원이 작동하지 않습니다

한 컴퓨터에서 프로젝트를 체크인하고 다른 컴퓨터에서 체크 아웃했으며 NuGet에 의해 설치된 바이너리가 누락 된 것을 발견했습니다. 소스 제어도 확인할 수 있지만 더 나은 해결책이있는 것 같습니다.

http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

나는 그 지침을 따랐으며 이제 .nuget폴더가 있어야하며 내 .csproj 파일에 다음 항목이 있습니다.

<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

그러나 솔루션을 다시 빌드 할 때 누락 된 패키지는 복원되지 않습니다.

내가 무엇을 놓치고 있습니까? 이 문제를 어떻게 진단 할 수 있습니까?



답변

nuget 패키지 관리자 콘솔에서 다음 명령을 실행하여 패키지 복원을 강제 실행할 수 있습니다.

업데이트 패키지-다시 설치

솔루션의 모든 것을 강제로 다시 설치합니다.


업데이트 패키지-재설치-ProjectName myProj

myProj 프로젝트의 모든 것을 강제로 다시 설치합니다.

참고 : 이것은 핵 옵션입니다. 이 명령을 사용할 때 설치 한 것과 동일한 버전의 패키지를 얻지 못할 수 있으며 이로 인해 문제가 발생할 수 있습니다. 솔루션 수준이 아니라 프로젝트 수준에서 발생할 가능성이 적습니다.

-safe명령 행 매개 변수 옵션을 사용하여 동일한 주 및 부 버전 구성 요소가있는 최신 버전으로 업그레이드를 제한 할 수 있습니다 . 이 옵션은 나중에 추가되어 주석에 언급 된 일부 문제를 해결합니다.

업데이트 패키지-재설치-안전


답변

이 게시물을 우연히 본 다른 사람들을 위해 이것을 읽으십시오.

NuGet 2.7+는 자동 패키지 복원 을 소개했습니다 . 이것은 MSBuild 프로세스를 변경하지 않기 때문에 대부분의 응용 프로그램에서 훨씬 더 나은 접근 방법으로 간주됩니다. 덜 두통.

시작할 수있는 몇 가지 링크 :


답변

다음 중 한 가지 방법을 선택해야합니다.

모든 솔루션 프로젝트에서 이름으로 패키지를 다시 설치하십시오.

Update-Package –reinstall <packageName>

이름으로 패키지를 다시 설치하고 모든 솔루션 프로젝트에서 종속성을 무시합니다.

Update-Package –reinstall <packageName> -ignoreDependencies

프로젝트에서 이름으로 패키지를 다시 설치하십시오.

Update-Package –reinstall <packageName> <projectName>

특정 프로젝트에서 모든 패키지를 다시 설치하십시오.

Update-Package -reinstall -ProjectName <projectName>

솔루션에서 모든 패키지를 다시 설치하십시오.

Update-Package -reinstall


답변

패키지 / 이진이없는 프로젝트에서 패키지 복원 모드를 활성화 했습니까? 복원 모드를 활성화 할 때 패키지를 올바르게 설치해야하는 알려진 문제가 있습니다.

http://nuget.codeplex.com/workitem/1879


원본 링크가 죽었습니다. 이것은 교체 일 수 있습니다 : https://github.com/NuGet/Home/issues/1968


답변

VS 2017

도구> NuGet 패키지 관리자> 패키지 관리자 설정> 일반 “모든 NuGet 캐시 지우기”를 클릭하십시오.


답변

두 가지 시나리오 에서이 문제가 발생했습니다.

먼저 msbuild.exe를 사용하여 명령 줄에서 솔루션을 빌드하려고합니다. 둘째, TFS 및 CI를 사용하여 빌드 서버에서 sln 및 포함 프로젝트를 빌드하려고 할 때.

참조가 누락되었다고 주장하는 오류가 발생합니다. 로컬 빌드 디렉토리와 TFS 서버를 모두 검사 할 때 / packages 폴더가 생성되지 않고 nuget 패키지가 복사되지 않는 것을 알 수 있습니다. Alexandre의 답변에 나열된 지침에 따라 http://nuget.codeplex.com/workitem/1879 도 작동하지 않았습니다.

VS2010을 통해 패키지 복원을 활성화했으며 VS2010 내에서만 빌드가 작동하는 것을 보았습니다. 다시 말하지만 msbuild 사용이 실패합니다. 해결 방법은 완전히 유효하지 않지만 내 환경의 경우 명령 줄 빌드와 TFS의 CI 빌드에서 모든 것이 작동합니다.

. \ nuget으로 이동하여 .nuget \ NuGet.targets 파일에서이 줄을 변경했습니다.

에서:

<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>

to : (주의 사항, 변수 주위에 따옴표가 없음)

<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>

내 디렉토리에 공백이 있으면 실패하지만 디렉토리에 공백이 없으므로이 해결 방법으로 빌드가 성공적으로 완료되었습니다 … 당분간.

빌드에서 진단 수준 로깅을 설정하면 msbuild에서 실행중인 명령을 표시하는 데 도움이됩니다. 이것이 목표 파일을 일시적으로 해킹하게 한 것입니다.


답변

다른 방법으로 문제가 해결되지 않으면 다음을 시도하십시오.

  1. 프로젝트를 닫습니다.
  2. 솔루션 폴더에서 패키지 폴더를 삭제하십시오.
  3. 프로젝트를 다시 열고 너겟 패키지를 다시 복원하십시오.

나를 위해 일했고 시도하기 쉽습니다.