NuGet을 통해 이전 버전의 패키지를 설치하는 방법은 무엇입니까?


384

이전 버전의 패키지 ( Newtonsoft.Json) 를 설치하고 싶습니다 . 그러나 NuGet은 롤백합니다.

PM> Install-Package Newtonsoft.Json -Version 4.0.5
Successfully installed 'Newtonsoft.Json 4.0.5'.
Install failed. Rolling back...
Install-Package : Already referencing a newer version of 'Newtonsoft.Json'.

어떤 도움이라도 대단히 감사하겠습니다.


답변:


579

다음을 시도하십시오 :

Uninstall-Package Newtonsoft.Json -Force

뒤에 :

Install-Package Newtonsoft.Json -Version <press tab key for autocomplete>

twitterizer는 Newtonsoft를 사용합니다 .Json, 나는 최신 버전을 제거하지 않고 더 오래 설치해야합니다. PM> Uninstall-Package Newtonsoft.Json 제거-패키지 : 'twitterizer 2.4.0.26532'가 의존하여 'Newtonsoft.Json 4.0.8'을 제거 할 수 없습니다.
Nebide Yildiz

9
패키지에 대한 기존 종속성에 대해서는 언급하지 않았으므로이를 인식하지 못했습니다. 위의 편집 된 uninstall-package 명령에 -Force 스위치를 추가하십시오.
Xavier Decoster

실종해서 죄송합니다. -Force가 효과가 있었고 이전 버전을 설치했습니다. 정말 고맙습니다.
Nebide Yildiz

EntityFramework 6 베타를 제거하여 버전 5로 다운 그레이드하면 VS를 다시 시작하라는 메시지가 계속되어 제거가 완료되었지만 메시지가 제거되지 않았습니다. 방금 패키지 폴더에 들어가서 남아있는 빈 트리 구조를 삭제
Simon_Weaver

@Simon_Weaver EF 6 pkg이이를 유발하는 일을하고 있다고 생각합니다 (예 : PowerShell 스크립트에서 일부 AppDomain 코드를 주목 했으므로 VS가 일부 dll을 보유하고 있음)
Xavier Decoster

266

현재 Nuget 2.8 하는 기능이 다운 그레이드 패키지를.

Nuget 2.8 릴리즈 노트

예:

패키지 관리자 콘솔에 입력 한 다음 명령은 couchbase 클라이언트를 버전 1.3.1.0으로 다운 그레이드합니다.

Update-Package CouchbaseNetClient -Version 1.3.1.0

결과:

Updating 'CouchbaseNetClient' from version '1.3.3' to '1.3.1.0' in project [project name].
Removing 'CouchbaseNetClient 1.3.3' from [project name].
Successfully removed 'CouchbaseNetClient 1.3.3' from [project name].

아래의 크림 보에 따라 참고할 사항 :

"이 방법은 한 시험판 버전에서 다른 시험판 버전으로 다운 그레이드 할 때는 작동하지 않습니다. 릴리스 버전으로 다운 그레이드하는 경우에만 작동합니다."


13
최소한의 노력으로 최고의 솔루션으로 받아 들여질 것입니다.
Peter

예, 모든 종속성을 다운 그레이드를 포함, 매력처럼 작동 - 완벽한
피터

7
불행히도이 방법은 한 시험판 버전에서 다른 시험판 버전으로 다운 그레이드 할 때는 작동하지 않으며 릴리스 버전으로 다운 그레이드하는 경우에만 작동합니다.
crimbo December

@ 제임스 롤랜드 (James Roland) 답변에 크리 보로 시험판 경고를 강조 표시 할 수 있다면 좋을 것입니다
eglasius

51

나는 Xavier의 대답을 꽤 많이 사용했습니다. 최신 버전의 NuGet에서 패키지 버전을 지정된 범위로 제한하는 것이 쉽고 유용하다는 것을 추가하고 싶습니다.

예를 들어, 프로젝트에서 Newtonsoft.Json과거 버전 3.x.x을 업데이트 하지 않으려면 파일 package에서 해당 요소 packages.config를 다음과 같이 변경하십시오.

<package id="Newtonsoft.Json" version="3.5.8" allowedVersions="[3.0, 4.0)" targetFramework="net40" />

통지 allowedVersions속성을. 이렇게하면 해당 패키지의 버전이 3.0( 포함 ) 및 4.0( 독점 ) 사이의 버전으로 제한됩니다 . 그런 다음 Update-Package전체 솔루션 을 수행 할 때 특정 패키지가 이전 버전으로 업데이트되는 것에 대해 걱정할 필요가 없습니다 3.x.x.

이 기능에 대한 설명서는 여기에 있습니다 .


4
NuGet 업데이트로 솔루션이 중단되는 것을 방지하는 데 매우 유용합니다! (Microsoft.Net.Http v2.1.10,보고 있습니다 ...)
Douglas Barbin

6
JQuery 1.9 및 2.0을보고 있습니다.
Martin Brown

Microsoft.Owin for me :-)
bikeman868 2

19

이제는 Visual Studio 2015 이상 에서 매우 단순화 되었습니다. Downgrade / Upgrade패키지 관리자 콘솔에서 명령을 실행하지 않고 사용자 인터페이스 자체에서 수행 할 수 있습니다 .

  1. Right click on your project그리고 go to Manage Nuget Packages.

  2. 아래 이미지를보십시오.

    • Select your Package and Choose the Version설치하려고했습니다.

프로젝트의 Nuget 패키지 관리자 창

매우 간단하지 않습니까? :) 도움이 되었기를 바랍니다...


1
네! 이것은 갈 길입니다 :)
임 포스터 증후군

0

그것을 얻는 또 다른 수동 옵션 :

.nuget\nuget.exe install Newtonsoft.Json -Version 4.0.5
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.