2012-02-29 38 views
10

Tôi đang nghiên cứu một số công cụ của Nuget. Tôi tự hỏi Nuget có thích hợp cho việc phân phối các lệnh .exe - hay cho vấn đề đó nếu Nuget chỉ định dùng để tham chiếu đến một dự án (dĩ nhiên bạn cũng có thể liên kết với một exe thay vì một dll - IIRC). Rõ ràng, tôi có thể dễ dàng tạo ra một ứng dụng giao diện điều khiển và sau đó tham khảo các gói Nuget, nhưng tôi tự hỏi nếu điều này luôn luôn cần thiết. Ngoài ra, có vẻ như không giống như đá quý, không có repo đá quý địa phương, vì vậy tôi cảm thấy như .exe (s) không phải là mục đích sử dụng cho các gói Nuget, nhưng tôi không thấy lý do tại sao chúng cần được giới hạn trong thời trang - hoặc tôi đang thiếu một cái gì đó?Gói Nuget thực sự là lệnh exe?

Trả lời

17

Bạn có thể bao gồm các chương trình thực thi trong gói NuGet của mình. Từ Creating and Publishing a Package:

cụ - Các thư mục công cụ của một gói là cho các kịch bản PowerShell và các chương trình thể truy cập từ Package Manager Console. Sau khi thư mục được sao chép vào dự án mục tiêu , nó được thêm vào biến môi trường `$ env: Path (PATH).

Có một vài điều bạn nên biết, tuy nhiên, nếu bạn chọn để làm điều này:

  • Bạn là chính xác rằng, không giống như RubyGems, NuGet không có khái niệm về hệ thống- hoặc các gói cấp máy; các gói được nhắm mục tiêu đến một dự án duy nhất, hoặc (hiếm khi) đến một giải pháp. Vì vậy, tệp thực thi này sẽ được đặt trong thư mục của gói cho mỗi giải pháp mà nó được sử dụng.
  • Phần mở rộng NuGet Visual Studio thêm đường dẫn của thư mục công cụ của gói vào biến môi trường PATH của bảng điều khiển của nó, vì vậy bạn có thể thực hiện thuận tiện các chương trình trong đó. Bên ngoài Visual Studio, khi sử dụng các máy khách NuGet khác (chẳng hạn như nuget.exe), sẽ không có bất kỳ xử lý PATH tự động nào, do đó bạn phải xử lý việc nhận đường dẫn đến chương trình.
  • Tính năng NuGet này được thiết kế cho các tập lệnh và chương trình thực thi liên quan đến phát triển dự án (ví dụ: trình tạo mã, công cụ thao tác tệp dự án, công cụ khen khung như trình mô phỏng hoặc máy chủ phát triển, v.v.). Mặc dù bạn có thể sử dụng tính năng này theo những cách mà nó không được thiết kế, nếu bạn muốn cung cấp các chương trình hệ thống không thực sự liên quan đến phát triển dự án, bạn có thể muốn xem Chocolatey, "Trình quản lý gói máy, giống như apt-get, nhưng được xây dựng với các cửa sổ trong tâm trí. "
+0

Cảm ơn đề xuất - Tôi chưa bao giờ nghe nói về Chocolatey. ;-) – lucidquiet

+1

nếu các tập tin thực thi phụ thuộc vào các hội đồng trong thư mục lib thì nó sẽ không tải chúng, trừ khi chúng được nhân đôi trong thư mục công cụ, phải không? –

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