2012-04-18 38 views
339

Tôi muốn cài đặt phiên bản cũ hơn của gói (Newtonsoft.Json). Nhưng NuGet quay trở lại.Làm thế nào để cài đặt một phiên bản cũ hơn của gói thông qua 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'. 

Mọi trợ giúp sẽ được đánh giá cao.

+3

bản sao có thể có của [Tải xuống phiên bản cũ của gói với nuget] (http://stackoverflow.com/questions/5628689/download-old-version-of-package-with- nuget) –

Trả lời

526

hãy thử như sau:

Uninstall-Package Newtonsoft.Json -Force 

tiếp theo:

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

twitterizer sử dụng Newtonsoft.Json, tôi phải cài đặt cũ hơn mà không cần gỡ bỏ cài đặt mới hơn. PM> Gỡ cài đặt gói Newtonsoft.Json Gỡ cài đặt-gói: Không thể gỡ cài đặt 'Newtonsoft.Json 4.0.8' vì 'twitterizer 2.4.0.26532' phụ thuộc vào nó. –

+6

Bạn đã không đề cập đến các phụ thuộc hiện có cho gói nên tôi đã không nhận thức được điều đó: thử thêm công tắc -Force vào lệnh gỡ cài đặt gói (như đã chỉnh sửa ở trên) –

+0

Xin lỗi vì sự thiếu của tôi. -Force đã hoạt động và tôi đã cài đặt phiên bản cũ hơn. Cảm ơn bạn rất nhiều. –

46

Tôi đã sử dụng câu trả lời Xavier của khá một chút. Tôi muốn thêm rằng hạn chế phiên bản gói vào một phạm vi được chỉ định là dễ dàng và hữu ích trong các phiên bản mới nhất của NuGet.

Ví dụ, nếu bạn không bao giờ muốn Newtonsoft.Json được cập nhật qua phiên bản 3.x.x trong dự án của bạn, thay đổi package yếu tố tương ứng trong tập tin packages.config của bạn trông như thế này:

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

Thông báo các allowedVersions thuộc tính. Điều này sẽ giới hạn phiên bản của gói đó thành các phiên bản giữa 3.0 (bao gồm) và 4.0 (độc quyền). Sau đó, khi bạn thực hiện Update-Package trên toàn bộ giải pháp, bạn không cần phải lo lắng về gói cụ thể đó đang được cập nhật phiên bản trước đây 3.x.x.

Tài liệu cho chức năng này là here.

+4

Rất hữu ích để ngăn chặn cập nhật NuGet khỏi phá vỡ giải pháp của bạn! (Microsoft.Net.Http v2.1.10, tôi đang nhìn bạn ...) –

+6

Tôi đang xem JQuery 1.9 & 2.0. –

241

Kể từ Nuget 2.8 có một tính năng để hạ cấp một gói.

Nuget 2.8 Release Notes

Ví dụ:

Lệnh sau nhập vào Package Manager Console sẽ hạ cấp cho khách hàng couchbase lên phiên bản 1.3.1.0

Update-Package CouchbaseNetClient -Version 1.3.1.0 

Kết quả:

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]. 

someth ing cần lưu ý theo crimbo dưới đây:

"phương pháp này không làm việc cho hạ từ một phiên bản phát hành trước phiên bản phát hành trước khác - nó chỉ hoạt động cho giáng cấp lên một phiên bản phát hành"

+13

Điều này bây giờ sẽ là câu trả lời được chấp nhận là giải pháp tốt nhất của nó với nỗ lực tối thiểu. – Peter

+0

Có, hoạt động như một nét duyên dáng, bao gồm hạ cấp tất cả các phụ thuộc - hoàn hảo – peter

+7

Thật không may, cách tiếp cận này không hoạt động cho việc hạ cấp từ phiên bản prerelease sang phiên bản prerelease khác - nó chỉ hoạt động để hạ cấp xuống phiên bản phát hành. – crimbo

11

Bây giờ, nó rất nhiều được đơn giản hóa trong Visual Studio 2015. Bạn có thể thực hiện Downgrade/Upgrade trong chính giao diện người dùng mà không cần thực thi lệnh trong Package Manager Console.

  1. Right click on your projectgo to Manage Nuget Packages.

  2. Nhìn vào hình ảnh bên dưới.

    • Select your Package and Choose the Version, mà bạn muốn cài đặt.

Nuget Package Manager window of Project

Rất Rất đơn giản, không phải là nó? :) Hy vọng điều này sẽ giúp ...

+0

Câu trả lời hay nhất !!!! –

Các vấn đề liên quan