2014-07-22 16 views
6

Hãy nói rằng tôi có một cấu trúc thư mục sauCó cách nào để buộc FAKE RestorePackages() tìm các gói để khôi phục trong đường dẫn khác hơn "./**/packages.config" không?

build 
    build.fsx 
    build.bat 
    //build tools etc. 
src 
    Project1 
    Project2 
    //... 

Khi tôi chạy RestorePackages của tôi() trong build.fsx nó sẽ tìm kiếm packages.config trong "./**/packages.config" (theo documentation), và sẽ bỏ qua tất cả các gói được khôi phục trong các thư mục dự án.

Tôi có thể sử dụng this method và có thể cung cấp từng đường dẫn cho mỗi gói project.config của dự án, nhưng tôi không muốn thay đổi tập lệnh xây dựng mỗi khi tôi thêm dự án mới vào giải pháp.

Có cách nào, để thực hiện RestorePackages() để tìm tất cả các gói .config trong một số đường dẫn cụ thể không?

CHỈNH SỬA:

Câu hỏi liên quan bổ sung. Tôi thấy, tôi sẽ phải vượt qua đường dẫn nuget để RestorePackage, bởi vì theo mặc định nó có vẻ như mong đợi nó trong ./tools/nuget/nuget.exe. Tôi có thể làm điều này có thể như thế:

RestorePackage(fun p -> { p with ToolPath = "my/nuget/path"}) 

Nhưng tôi không biết làm thế nào để kết hợp nó thành ví dụ bạn đã cung cấp. Cú pháp F # vẫn còn hơi khó hiểu đối với tôi xung quanh các đường ống và các cuộc gọi hàm.

Trả lời

6

Tôi thấy hai giải pháp.

  1. đặt xây dựng kịch bản của bạn vào thư mục gốc dự án
  2. Ghi đè phương pháp mặc định. Đặt này lên đầu xây dựng kịch bản của bạn:
let RestorePackages() = 
    !! "./../**/packages.config" 
    |> Seq.iter (RestorePackage id) 
Các vấn đề liên quan