Làm cách nào để cài đặt tệp .nupkg gói NuGet cục bộ?


Câu trả lời:


462

Công cụ menu → Tùy chọnTrình quản lý gói

Nhập mô tả hình ảnh ở đây

Đặt tên và vị trí thư mục. Nhấn OK. Thả tập tin gói NuGet của bạn trong thư mục đó.

Chuyển đến Dự án của bạn, nhấp chuột phải và chọn "Quản lý gói NuGet" và chọn nguồn gói mới của bạn.

Nhập mô tả hình ảnh ở đây

Đây là tài liệu .


22
Thật ra, tôi đã thực hiện bước 1 một vài lần. Nhưng gói của tôi không hiển thị ở bước 2, khi tôi mở ra để xem các gói đã cài đặt, Cập nhật hoặc các gói gần đây.
Tom

2
Trên màn hình của tôi, tôi chỉ có "Tất cả" trong "Gói đã cài đặt" không phải là "nguồn gói chính thức NuGet", không phải là "newNuget" tùy chỉnh của tôi, chúng bị thiếu.
Tom

1
Tôi đang sử dụng vs2010. Cố gắng tải xuống và cài đặt nuget mới nhất từ ​​trang chủ của họ ngay bây giờ. Tải xuống nhấp vào tiếp theo ... sau đó là lỗi ... M $ như mong đợi, có một liên kết các vấn đề đã biết, kiểm tra xem, nói không khớp chữ ký thì tôi cần gỡ cài đặt nuget hiện có và nó rất dễ sửa. tốt thôi, làm đi Khi tôi khởi động lại máy tính và cài đặt lại, lỗi tương tự xuất hiện trở lại, chữ ký không khớp ... vì vậy bây giờ tôi bị kẹt với phiên bản cũ, phiên bản mới không muốn cài đặt.
Tom

2
Vấn đề cố định. Tôi đã gỡ cài đặt nuget từ windows -> bảng điều khiển. Nó không hoạt động theo cách đó. Tôi cần khởi động VS và vào Công cụ-> Trình quản lý tiện ích mở rộng ... sau đó nhấn gỡ cài đặt nuget từ đó. Đã khởi động lại VS. Sau đó đi cài đặt lại nuget, nó hoạt động. Bây giờ, các tệp nupkg cục bộ cũng xuất hiện (chỉnh sửa: chúng nằm trong tab Trực tuyến, không phải tab Đã cài đặt, lỗi của tôi trong ảnh tôi đăng). Cảm ơn sự giúp đỡ :)
Tom

1
Tôi chưa có đủ danh tiếng để bình luận - nhưng để trả lời Michael trong phần trả lời được chấp nhận, các bình luận về VS2015 vẫn muốn lên mạng. Tôi có cùng một vấn đề, nhưng trong các tùy chọn, nếu bạn bỏ chọn tất cả các nguồn trực tuyến thì nó hoạt động cho các nguồn ngoại tuyến. Tùy chọn nuget pic
Mick m

302

Bạn cũng có thể sử dụng Bảng điều khiển quản lý gói và gọi Install-Packagelệnh ghép ngắn bằng cách chỉ định đường dẫn đến thư mục chứa tệp gói trong -Sourcetham số:

Install-Package SomePackage -Source C:\PathToThePackageDir\

2
Tôi có thể làm một cái gì đó như thế với công cụ dòng lệnh không?
Poul K. SøDRen

5
Đúng. Các -Sourcetùy chọn có sẵn trong nuget.exe là tốt. Ví dụ:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio

16
Bạn cũng có thể cần chỉ định cờ -IncludePrerelease. Mặt khác, nếu phiên bản gói có hậu tố dash (ví dụ "-beta1"), Cài đặt-Gói sẽ không tìm thấy.
Jeff Sharp

9
Đây là một câu trả lời trực tiếp hơn nhiều so với câu trả lời được chấp nhận. Cảm ơn bạn về thông tin!
David Peters

2
Không hoạt động cho VS 2017, xem f.ex. trả lời bởi @Granger.
RenniePet

124

Đối với các tệp .nupkg tôi muốn sử dụng:

Install-Package C:\Path\To\Some\File.nupkg

7
Chỉ có điều mà làm việc. Nếu đường dẫn đến thư mục chứa khoảng trắng, hãy đưa nó vào dấu ngoặc kép.
Nikos

4
Đồng ý. Và đáng nói là chỉ có những con đường tuyệt đối mới hoạt động
Sebastian J.

5
Không hoạt động cho VS 2017, xem f.ex. trả lời bởi @Granger.
RenniePet

1
@RenniePet đã hoạt động cho tôi trong VS2017 (nhưng tôi đã đặt thư mục của mình .nupkgtrong cùng một thư mục, mọi gói khác được lưu trữ)
Rafalon

1
Nó không hoạt động đối với tôi, tôi đang sử dụng VS2013 Phiên bản 12.0.21..5 và trình quản lý gói Nuget 2.12.0.817 :(
Niraj

56

Dành cho Visual Studio 2017 và định dạng .csproj mới của nó

Bạn không còn có thể sử dụng Gói cài đặt để trỏ đến tệp cục bộ. (Điều đó có thể là do PackageReferencephần tử không hỗ trợ đường dẫn tệp; nó chỉ cho phép bạn chỉ định Id của gói.)

Trước tiên, bạn phải nói với Visual Studio về vị trí của gói của bạn và sau đó bạn có thể thêm nó vào một dự án. Những gì hầu hết mọi người làm là vào Trình quản lý gói NuGet và thêm thư mục cục bộ làm nguồn (menu Công cụTùy chọnTrình quản lý gói NuGetNguồn gói ). Nhưng điều đó có nghĩa là vị trí của người phụ thuộc của bạn không được cam kết (kiểm soát phiên bản) với phần còn lại của cơ sở mã của bạn.

Các gói NuGet cục bộ sử dụng đường dẫn tương đối

Điều này sẽ thêm một nguồn gói chỉ áp dụng cho một giải pháp cụ thể và bạn có thể sử dụng các đường dẫn tương đối.

Bạn cần tạo một nuget.configtệp trong cùng thư mục với .slntệp của bạn . Định cấu hình tệp với (các) nguồn gói bạn muốn. Khi bạn mở giải pháp tiếp theo trong Visual Studio 2017, mọi tệp .nupkg từ các thư mục nguồn đó sẽ có sẵn. (Bạn sẽ thấy (các) nguồn được liệt kê trong Trình quản lý gói và bạn sẽ tìm thấy các gói trên tab "Duyệt" khi bạn đang quản lý các gói cho một dự án.)

Đây là một ví dụ nuget.configđể giúp bạn bắt đầu:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

Backstory

Trường hợp sử dụng của tôi cho chức năng này là tôi có nhiều phiên bản của một kho lưu trữ mã duy nhất trên máy của mình. Có một thư viện chia sẻ trong cơ sở mã được xuất bản / triển khai dưới dạng tệp .nupkg. Cách tiếp cận này cho phép các giải pháp phụ thuộc khác nhau trong toàn bộ cơ sở mã của chúng tôi sử dụng gói trong cùng một thể hiện kho lưu trữ. Ngoài ra, ai đó có cài đặt Visual Studio 2017 mới có thể kiểm tra mã bất cứ nơi nào họ muốn và các giải pháp phụ thuộc sẽ khôi phục và xây dựng thành công.


Tôi đang sử dụng VS 2017 và chưa gặp phải vấn đề này. Tôi chỉ cần thông qua các -Sourceđối số Update-Packagevà nó hoạt động tốt. Có lẽ một cái gì đó để làm cụ thể với Install-Packagelệnh?
Greg Burghardt

48
  1. Thêm các tệp vào thư mục có tên LocalPackages bên cạnh giải pháp của bạn (không cần phải gọi như vậy, nhưng điều chỉnh xml trong bước sau cho phù hợp)
  2. Tạo một tệp có tên NuGet.config bên cạnh tệp giải pháp của bạn với các nội dung sau

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
  3. Nếu giải pháp được mở trong Visual Studio, hãy đóng nó lại, sau đó mở lại.

Bây giờ các gói của bạn sẽ xuất hiện trong trình duyệt hoặc có thể cài đặt bằng Cài đặt gói


Câu trả lời tuyệt vời, chính xác là giải pháp tôi đang tìm kiếm. Cảm ơn!
Jonathan

1
Điều này có thể là do tôi có một gói có cùng tên với kho trên kho Nuget, nhưng tôi cần sử dụng Bảng điều khiển quản lý gói và chọn nguồn gói là LocalPackages trước khi chạy Cài đặt gói.
Lu-ca

42

Nếu bạn có tệp .nupkg và chỉ cần tệp dll, tất cả những gì bạn phải làm là thay đổi phần mở rộng thành .zip và tìm thư mục lib.


3
nếu bạn coi nó là tệp zip, thì các tệp có khoảng trắng trong tên tệp sẽ được trích xuất bằng% (thay thế khoảng trắng). Để tránh cài đặt này bằng NuGet.
La

2
Trên thực tế, bạn thậm chí không cần đổi tên tiện ích mở rộng. Chỉ cần nhấp chuột phải vào tệp, sau đó chọn Mở bằng và tìm một ứng dụng có thể mở tệp .zip và tệp .nupkg có thể được mở, sau đó bạn có thể trích xuất tệp dll cần thiết vào thư mục được chỉ định.
jyao

1
Giải pháp tốt nhất tôi cần
Leo Nguyễn

8

Chỉ cần đưa ra một bản cập nhật, có những thay đổi nhỏ cho người dùng Visual Studio 2015.

Để sử dụng hoặc cài đặt gói theo cách thủ công, hãy đi tới Công cụ -> Tùy chọn -> Trình quản lý gói NuGet -> Nguồn gói

Nhấp vào nút Thêm, chọn Nguồn và đừng quên nhấp vào " Cập nhật " vì nó sẽ cập nhật vị trí thư mục cho các gói của bạn, chỉnh sửa Tên mong muốn của nguồn gói nếu bạn muốn:

nhập mô tả hình ảnh ở đây

Để chọn gói đã thêm của bạn, nhấp chuột phải vào giải pháp của bạn và chọn " Quản lý gói Nuget "

Danh sách thả xuống ở bên phải và chọn Duyệt để duyệt các gói mà bạn đã chỉ định trên nguồn thư mục của mình. Nếu không có gói nuget trên nguồn thư mục đó, thì nó sẽ trống:

nhập mô tả hình ảnh ở đây


6

Trên Linux, với NuGet CLI, các lệnh tương tự nhau. Để cài đặt my.nupkg, hãy chạy

nuget add -Source some/directory my.nupkg

Sau đó chạy dotnet restoretừ thư mục đó

dotnet restore --source some/directory Project.sln

hoặc thêm thư mục đó dưới dạng nguồn NuGet

nuget sources Add -Name MySource -Source some/directory

và sau đó nói msbuildđể sử dụng thư mục đó với /p:RestoreAdditionalSources=MySourcehoặc /p:RestoreSources=MySource. Chuyển đổi thứ hai sẽ vô hiệu hóa tất cả các nguồn khác, tốt cho các tình huống ngoại tuyến, ví dụ.


1
Trên mac (tôi cũng giả sử Linux), bạn không thể tin tưởng nuget sourcesnếu bạn đang sử dụng dotnet restore(hoặc VS Mac ) vì lỗi này . Tôi đã phải thêm nguồn cục bộ vào ~/.nuget/NuGet/NuGet.Configthủ công (xem vấn đề GH này ).
gabe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.