2014-07-22 3 views
6

मान लीजिए कि मैं"//**/packages.config" से दूसरे पथ में पुनर्स्थापित करने के लिए संकुल को देखने के लिए FAKE RestorePackages() को बल देने का कोई तरीका है?

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

जब मैं build.fsx यह "./**/packages.config" में packages.config के लिए दिखेगा में मेरी RestorePackages() चलाने (documentation के अनुसार एक निम्न फ़ोल्डर संरचना है चलो), और प्रोजेक्ट फ़ोल्डरों में पुनर्स्थापित करने के लिए सभी संकुलों को अनदेखा कर देगा।

मैं this method का उपयोग कर सकता हूं और संभवतः प्रत्येक प्रोजेक्ट के पैकेज.कॉन्फिग में एक-एक करके पथ देता हूं, लेकिन जब भी मैं समाधान के लिए नई परियोजना जोड़ता हूं तो मैं बिल्ड स्क्रिप्ट को बदलना नहीं चाहता हूं।

क्या कोई तरीका है, RestorePackages() को कुछ विशिष्ट पथ में सभी packages.config को देखने के लिए?

संपादित:

अतिरिक्त, संबंधित प्रश्न। मैं देखता हूं, मुझे RestorePackage पर nuget पथ पारित करना होगा, क्योंकि डिफ़ॉल्ट रूप से ऐसा लगता है कि यह ./tools/nuget/nuget.exe में अपेक्षा करता है। मैं उस तरह शायद ऐसा कर सकते हैं:

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

लेकिन मैं पता नहीं उदाहरण आपके द्वारा दी गई में टाई करने के लिए कैसे कर सकते है। एफ # सिंटैक्स अभी भी पाइप और फ़ंक्शन कॉल के आसपास मेरे लिए थोड़ा उलझन में है।

उत्तर

6

मुझे दो समाधान दिखाई देते हैं।

  1. परियोजना जड़
  2. डिफ़ॉल्ट विधि को अधिलेखित में अपने निर्माण स्क्रिप्ट डाल दिया। अपने निर्माण स्क्रिप्ट के शीर्ष करने के लिए इस रखो:
let RestorePackages() = 
    !! "./../**/packages.config" 
    |> Seq.iter (RestorePackage id) 
संबंधित मुद्दे

 संबंधित मुद्दे