'nuget' không được nhận dạng nhưng các lệnh nuget khác hoạt động


112

Tôi đang cố gắng tạo một gói nuget bằng cách sử dụng http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory làm tham chiếu. Bảng điều khiển Trình quản lý Gói của tôi trong Visual Studio không cho phép tôi sử dụng lệnh 'nuget'. Tôi có thể 'Get-help nuguet' và nó hiển thị:

Các lệnh ghép ngắn NuGet sau đây được bao gồm.

    Cmdlet                  Description
    ------------------      ----------------------------------------------
    Get-Package             Gets the set of packages available from the package source.

    Install-Package         Installs a package and its dependencies into the project.

    Uninstall-Package       Uninstalls a package. If other packages depend on this package, 
                            the command will fail unless the –Force option is specified.

    Update-Package          Updates a package and its dependencies to a newer version.

    Add-BindingRedirect     Examines all assemblies within the output path for a project
                            and adds binding redirects to the application (or web) 
                            configuration file where necessary.

    Get-Project             Returns a reference to the DTE (Development Tools Environment) 
                            for the specified project. If none is specifed, returns the 
                            default project selected in the Package Manager Console.

    Open-PackagePage        Open the browser pointing to ProjectUrl, LicenseUrl or 
                            ReportAbuseUrl of the specified package.

    Register-TabExpansion   Registers a tab expansion for the parameters of a command.
  • Tuy nhiên, bất cứ khi nào tôi bắt đầu các lệnh với nuget là:

Thuật ngữ 'nuget' không được công nhận là tên của lệnh ghép ngắn, hàm, tệp kịch bản hoặc chương trình có thể hoạt động. Kiểm tra chính tả của tên hoặc nếu một đường dẫn được bao gồm, hãy xác minh rằng đường dẫn đó là chính xác và thử lại.

Tại dòng: 1 char: 6 + nuget <<<< + CategoryInfo: ObjectNotFound: (nuget: String) [], CommandNotFoundException + CompleteQualifiedErrorId: CommandNotFoundException

Tôi đã thử các giải pháp sau:

1> đóng tất cả các mục và khởi động lại

2> gỡ cài đặt và cài đặt lại

3> tạo tệp hồ sơ powershell (trước đây không tồn tại và điều này thực sự đã phá vỡ mọi thứ)

Sự cố bắt đầu xuất hiện sau khi tôi nâng cấp phiên bản dùng thử Visual Studio 2012 Ultimate lên đã đăng ký. Tôi đã cài đặt VS 12 Pro ban đầu. Tôi không biết liệu điều đó có thực sự liên quan đến nó hay không nhưng tôi nhận thấy rằng những người khác gặp sự cố tương tự đã cài đặt so với 10 và 12.

Câu hỏi của tôi là "có ai biết những gì khác để thử?" Lý thuyết của tôi là đường dẫn đến lệnh nuget bị thiếu nhưng tôi không thể tìm thấy cách định cấu hình các đường dẫn mà bảng điều khiển trình quản lý gói sử dụng và tôi không chắc nơi thực sự lưu trữ lệnh nuget.

Đã cập nhật --- đã thử tải xuống công cụ dòng lệnh như được đề xuất bên dưới. Điều này dẫn đến không có gì hoạt động trở lại. Tôi đã cố gỡ cài đặt và bây giờ tôi có một mục trong phạm vi mở rộng vs2010 cho nuget chưa bật nút cài đặt hoặc gỡ cài đặt. Điều này khiến tôi tin rằng nó liên quan đến các tiện ích mở rộng được cài đặt từ năm 2010 và 2012 có một phần trong bộ phim truyền hình nhỏ của tôi. Nếu ai đó cũng biết cách xóa một tiện ích mở rộng có thể gỡ cài đặt, vui lòng tư vấn thêm nhưng tôi sẽ thử một câu hỏi khác cho điều đó.


1
Bạn đã bật UAC chưa và bạn đã thử chạy visual studio với tư cách quản trị viên để hủy hiển thị tiện ích mở rộng chưa?
Betty

Install-Package NuGet.CommandLine là câu trả lời chính xác.
live-love

@ live-love OP đang cố gắng tạo một gói chứ không phải cài đặt một gói
Nick Turner

Câu trả lời:


20

Bạn cũng có thể thử đặt đường dẫn biến hệ thống đến vị trí của exe nuget của bạn và khởi động lại VS.

  1. Mở PATHbiến hệ thống của bạn và thêm vị trí của nuget.exe của bạn (đối với tôi đây là C:\Program Files (x86)\NuGet\Visual Studio 2013:)
  2. Khởi động lại Visual Studio

Tôi đã đăng điều này dưới dạng nhận xét cho câu trả lời của bạn @done_merson nhưng tôi không có đủ danh tiếng cần thiết để làm điều đó.


151

Nuget.exe được đặt tại .nugetthư mục của dự án của bạn. Nó không thể được thực thi trực tiếp trong Bảng điều khiển Trình quản lý Gói, nhưng được thực thi bởi các lệnh Powershell vì các lệnh này xây dựng đường dẫn tùy chỉnh cho chính chúng.

Các bước giải quyết của tôi là:


Cập nhật

NuGet có thể được cài đặt dễ dàng trong dự án của bạn bằng lệnh sau:

Gói cài đặt NuGet.CommandLine


Những gì nên được nhập làm 'Tên biến'?
Ievgen Naida

1
Tôi đã phải nơi nuget.exe trên ổ đĩa giống như nơi tôi đang chạy lệnh NuGet (và điều chỉnh giá trị PATH biến môi trường cho phù hợp)
mediafreakch

Bạn có thể xem biến môi trường PATH bằng cách vào Control Panel> System> Advanced System Settings, sau đó trên cửa sổ System Properties, nhấp vào tab Advanced và ở đó bạn sẽ thấy nút "Môi trường biến ...". Trong Nhóm biến hệ thống, hãy tìm biến môi trường PATH. Sau đó, thêm một đường dẫn khác bằng cách phân cách nó bằng dấu chấm phẩy (;).
Jerameel Resco

1
Chắc có một số lỗi .... Tôi nhận được Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'nhưng khi tôi viết NuGet, tôi chỉ gặp một lỗi rằng lệnh không tồn tại.
Peter

23
Install-Package NuGet.CommandLinelà khủng khiếp bởi vì, 1. Nó thêm vào NuGet.CommandLinenhư một sự phụ thuộc vào dự án của tôi (ew!), và 2. Nó cần được thực hiện riêng biệt trong mọi dự án. npmcó tùy chọn 'cài đặt toàn cầu' - NuGet không có thứ gì đó tương tự sao !?
BlueRaja - Danny Pflughoeft,

60

Có nhiều cách tốt hơn để làm điều đó.

  1. Cài đặt gói Nuget.Build trong dự án mà bạn muốn đóng gói. Có thể cần phải đóng và mở lại giải pháp sau khi cài đặt.
  2. Cài đặt nuget qua sô cô la - đẹp hơn nhiều. Cài đặt chocolatey: https://chocolatey.org/ , sau đó chạy

    cinst Nuget.CommandLine

trong dấu nhắc lệnh của bạn. Điều này sẽ cài đặt nuget và đường dẫn môi trường thiết lập, do đó, nuget luôn có sẵn.


Không trừ khi bạn sử dụng npm để cài đặt chocolatey
Oleg Mihailik

Sau khi không gặp may với các câu trả lời khác, điều này có hiệu quả ngay với tôi. Chocolatey đã giúp tôi không phải thực hiện cấu hình PATH theo cách thủ công
Sam

47

Trong [Package Manager Console]thử bên dưới

Install-Package NuGet.CommandLine

Sau "Install-Package NuGet.CommandLine", nuget.exe có thể được thực thi trong PM.
BinSys

13
Thực thi: Thuật ngữ 'Thực thi' không được công nhận là tên của lệnh ghép ngắn, hàm, tệp kịch bản hoặc chương trình có thể hoạt động. Kiểm tra chính tả của tên hoặc nếu một đường dẫn được bao gồm, hãy xác minh rằng đường dẫn đó chính xác và thử lại. VS2015
cướp

Tôi gặp sự cố tương tự như @rob.
Grant Birchmeier

3
Đừng gõ toàn bộ dòng "Thực thi ...". Chỉ cần nhập:Install-Package NuGet.CommandLine
Serj Sagan

Tại sao oh tại sao MS làm mọi thứ sai?! Nếu họ chạy các nhà máy điện hạt nhân, tất cả chúng ta sẽ chết! Tại sao các lệnh quan trọng này không khả dụng và phải được tải xuống riêng? Rõ ràng là nó không giúp chúng ta tiết kiệm dung lượng ổ đĩa vì Microsoft sẽ sẵn sàng cài đặt bloatware của họ bất cứ khi nào họ có cơ hội.
ATL_DEV

17

Công cụ dòng lệnh nuget không đi kèm với tệp vsix, đó là một bản tải xuống riêng biệt

https://github.com/nuget/home


Đây là câu trả lời chính xác nhất cho câu hỏi cụ thể này.
Brady

12
  • Nhấp chuột phải vào dự án của bạn trong trình khám phá giải pháp .
  • Chọn Quản lý Gói NuGet cho Giải pháp .
  • Tìm kiếm NuGet.CommandLine của Microsoft và cài đặt nó. Tìm kiếm Nuget.CommandLine
  • Khi cài đặt hoàn tất, bạn sẽ tìm thấy một thư mục có tên các gói trong dự án của mình. Đi tới trình khám phá giải pháp và tìm kiếm nó. gói hàng
  • Các gói bên trong hãy tìm một thư mục có tên NuGet.CommandLine.3.5.0 , ở đây 3.5.0 chỉ là tên phiên bản, tên thư mục của bạn sẽ thay đổi theo. nuGet COmmand Line
  • Bên trong NuGet.CommandLine.3.5.0, hãy tìm một thư mục có tên là các công cụ . công cụ
  • Các công cụ bên trong bạn sẽ nhận được nuget.exe của mình nuget.exe

Ngoại lệ xảy ra. (Ngoại lệ từ HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire

11

Trong Visual Studio:

Tools -> Nuget Package Manager -> Package Manager Console.

Trong PM:

Install-Package NuGet.CommandLine

Đóng Visual Studio và mở lại.


7

Tôi đã giải quyết vấn đề này bằng cách tìm nuget.exe và chuyển đến một đường dẫn dễ nhập (c: \ nuget \ nuget) và sau đó gọi nuget bằng đường dẫn này. Điều này dường như giải quyết được vấn đề. c: \ nuget \ nuget tại bảng điều khiển trình quản lý gói hoạt động như mong đợi. Tôi đã cố gắng tìm đường dẫn mà bảng điều khiển đang sử dụng và thay đổi đường dẫn môi trường nhưng không bao giờ có thể làm cho nó hoạt động theo cách đó.


1
Đây phải là câu trả lời được chấp nhận. Nó thực sự không phức tạp hơn thế này!
Florian Winter

Cập nhật tháng 11 năm 2019 - nuget.exe là .exe cần thiết cho các công cụ dòng lệnh Nuget (thông qua bảng điều khiển Powershell hoặc cmd hoặc Bảng điều khiển trình quản lý gói Nuget trong VS) - xem tại đây docs.microsoft.com/en-us/nuget/ tham khảo /… . Nếu bạn không có nó lấy nó ở đây - nuget.org/downloads
Chris Halcrow

4

Truy xuất nuget.exetừ https://www.nuget.org/downloads. Sao chép nó vào một thư mục cục bộ và thêm thư mục đó vào PATHbiến môi trường.

Điều này sẽ làm cho nuget có sẵn trên toàn cầu, từ bất kỳ dự án nào.


Nó chỉ đơn giản vậy thôi. Tạo "c: \ Nuget", sau đó đi đến biến môi trường, nhân đôi Path, Nhấp vào Mới, đặt "C: \ Nuget" và bạn đã hoàn tất. Làm mọi thứ là visual studio là 2010. Sử dụng Powershell hoặc dòng lệnh.
Nick Turner
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.