[visual-studio-2012] Nuget 참조를 복원 하시겠습니까?

Visual Studio 2012에 솔루션 및 프로젝트가 있습니다.

프로젝트에는 프로젝트 packages.config루트에 파일 이 있습니다.

이 질문의 목적으로, 실수로 References프로젝트 의 섹션 에서 이러한 라이브러리를 제거했다고 가정 합니다.

NuGet 패키지 관리자로 들어갈 때 인터페이스는 여전히 패키지 옆에 틱을보고하여 설치되었음을 나타냅니다.

이 상황을 해결하는 방법을 볼 수있는 유일한 방법은에서 모든 항목을 삭제 packages.config하는 것입니다. 이 항목은 설치된 것으로보고하는 NuGet 인터페이스의 문제를 해결하고 각 항목을 다시 추가합니다.

더 똑똑한 방법이 있습니까? ‘누락 된 패키지를 복원하기 위해 너겟을 가능하게’하는 것이 이것을 해결하기를 희망했지만 아무것도하지 않는 것 같습니다.



답변

패키지를 다시 설치하십시오 .

NuGet Package Manager 콘솔에서 다음 명령을 입력하십시오.

Update-Package -Reinstall -ProjectName Your.Project.Name

패키지를 다시 설치하고 전체 솔루션에 대한 참조를 복원하려면 -ProjectName매개 변수를 생략하십시오 .


답변

누락 된 패키지 복원이 작동 하려면 VS 솔루션 수준에서 NuGet 패키지 복원활성화 해야합니다 .

여기에 이미지 설명을 입력하십시오


답변

이것이 누군가에게 도움이되는 경우 위의 어느 것도 충분하지 않았습니다. 나는 여전히 빌드 할 수 없었고 VS는 여전히 참조를 찾을 수 없었습니다. 핵심은 단순히 패키지를 복원 한 후 솔루션닫았다가 다시 여는 것 입니다.

시나리오는 다음과 같습니다 (Visual Studio 2012 사용).

패키지가없는 솔루션을 엽니 다. 참고 문헌은 VS가 찾을 수 없음을 보여줍니다. 누락 된 패키지를 복원하는 방법 에는 여러 가지 가 있습니다.

  • 자동 복원으로 설정된 솔루션 구축
  • 패키지 관리자 콘솔을 열고 멋진 “복원”버튼을 클릭하십시오
  • 일을 nuget restore당신은 명령 줄 nuget가 설치되어있는 경우

그러나 어떤 접근 방식을 사용하더라도 해당 참조는 여전히 누락 된 것으로 표시됩니다. 그리고 빌드하면 실패합니다. 한숨. 그러나 솔루션을 닫았다가 다시 열면 VS는 그 멋진 것들을 <HintPath>다시 확인 하고 패키지가 속해있는 곳으로 돌아 왔으며 모든 것이 세상과 잘 맞는다는 것을 알았습니다.

최신 정보

Visual Studio에 여전히 패키지가 있는지 확인하지 않습니까? 여전히 해결할 수없는 참조를 표시하고 있습니까? 복원 한 패키지 버전이 <HintPath>.csproj 파일 의 버전과 동일 해야합니다. 사소한 버그 수정 번호 (예 : 1.10.1 ~ 1.10.2)도 참조에 실패합니다. csproj xml을 직접 편집하거나 참조를 제거하고 패키지 디렉토리에서 새로 복원 된 버전을 가리키는 새 참조를 작성하여이 문제를 해결할 수 있습니다.


답변

@jmfenoll에서 제공하는 솔루션이 작동하는 동안 최신 패키지로 업데이트됩니다. 필자의 경우 베타 2 (시험판)를 설치하면 모든 라이브러리가 RC1 (버그가 있음)로 업데이트되었습니다. 따라서 위의 솔루션은 작업의 절반 만 수행합니다.

당신이 나와 같은 상황에 있고 프로젝트를 당신이 또는 당신이 지정한 NuGet 패키지의 정확한 버전과 동기화하고 싶다면 packages.config이 스크립트가 도움이 될 것입니다. 간단히 패키지 관리자 콘솔에 복사하여 붙여 넣기

function Sync-References([string]$PackageId) {
  get-project -all | %{
    $proj = $_ ;
    Write-Host $proj.name;
    get-package -project $proj.name | ? { $_.id -match $PackageId } | % {
      Write-Host $_.id;
      uninstall-package -projectname $proj.name -id $_.id -version $_.version -RemoveDependencies -force ;
      install-package -projectname $proj.name -id $_.id -version $_.version
    }
  }
}

그런 다음 별도의 패키지 이름으로 실행하십시오.

Sync-References AutoMapper

또는 같은 모든 패키지

Sync-References

크레딧은 Dan Haywood그의 블로그 게시물 로 이동합니다 .


답변

다음 스크립트는 Package Manger Console 창에서 실행할 수 있으며 다시 설치하기 전에 솔루션의 각 프로젝트에서 모든 패키지를 제거합니다.

foreach ($project in Get-Project -All) {
    $packages = Get-Package -ProjectName $project.ProjectName
    foreach ($package in $packages) {
        Uninstall-Package $package.Id -Force -ProjectName $project.ProjectName
    }
    foreach ($package in $packages) {
        Install-Package $package.Id -ProjectName $project.ProjectName -Version $package.Version
    }
}

이렇게하면 모든 패키지의 설치 스크립트가 다시 실행되어 누락 된 어셈블리 참조가 복원됩니다. 불행히도 파일 작성 및 구성 수정과 같이 스크립트를 설치 하는 다른 모든 작업도 다시 수행됩니다. 깨끗한 작업 복사본으로 시작하고 SCM 도구를 사용하여 유지할 변경 사항과 무시할 사항을 선택하고 선택하십시오.


답변

DLL을 수동으로 추가했습니다. 프로젝트에서 참조를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택한 다음 대화 상자에서 찾아보기 단추를 누르십시오. 솔루션의 패키지 디렉토리에있는 NuGet DLL. 그 이름을 얻으려면 올바르게 작동하는 다른 프로젝트에서 참조를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하고 경로 속성을 찾으십시오.


답변

Visual Studio 2015 (Soulution은 소스 제어, MVC-Project하에 있음)에서 csano가 Update-Package -Reinstall -ProjectName Your.Project.Name작동했지만 일부 쓰기 잠금으로 엉망이되었습니다.

이전에 “패키지”-폴더를 수동으로 삭제해야했습니다. (소스 제어로 인해 잠겨있는 것 같습니다).

또한 NuGet Package Manager에서 MVC 패키지를 다시 설치해야했습니다.