2010-12-09 12 views
6

मैं रेक और अल्बकोर का उपयोग कर कई सी # परियोजनाओं को बनाने की कोशिश कर रहा हूं। ऐसा लगता है कि मुझे लूप के बिना ऐसा करने में सक्षम होना चाहिए, लेकिन मैं इसे काफी काम नहीं कर सकता। , इस तरह के इसअल्बकोर का उपयोग करके मैं एक साथ कई परियोजनाओं का निर्माण कैसे करूं?

msbuild :selected_test_projects do |msb, args| 
    msb.path_to_command = @net40Path 
    msb.properties :configuration => :Release, 
    msb.targets [ :Test] 
    msb.solution = @teststorun 
end 

उत्तर

16

इस बिंदु पर के रूप में, कई समाधान के निर्माण के लिए MSBuild कार्य में कोई सीधा समर्थन नहीं है

msbuild :selected_test_projects do |msb, args| 
    @teststorun.each do |project| 
    msb.path_to_command = @net40Path 
    msb.properties :configuration => :Release, 
    msb.targets [ :Test] 
    msb.solution = project 
    msb.build 
    end 
end 

मैं नहीं बल्कि कुछ क्लीनर करना चाहते हैं: मुझे क्या करना है यह है। यद्यपि कुछ विकल्प उपलब्ध हैं। यह अधिकतर सिंटैक्स के नीचे आता है जो आपको ऐसा करने के लिए सबसे अच्छा लगता है, लेकिन उनमें से सभी को किसी प्रकार का लूप शामिल है।

वैसे: albacore v0.2.2 बस कुछ दिन पहले रिलीज़ हुआ था। यह .NET 4 पर डिफ़ॉल्ट होता है, और .path_to_command को कम करता है .command। चूंकि यह डिफ़ॉल्ट है, हालांकि, आपको उपयोग करने के लिए .command निर्दिष्ट करने की आवश्यकता नहीं है। मैं यहां उदाहरण के लिए इस वाक्यविन्यास का उपयोग करूंगा। आप प्रत्येक समाधान के लिए एक सरणी और कॉल MSBuild में समाधान की सूची को http://albacorebuild.net

विकल्प # अतिरिक्त रिलीज नोट्स पढ़ सकते हैं 1

लोड। यह जोड़ देगा: msbuild के कई उदाहरणों के साथ कार्य का निर्माण करें और जब आप कॉल करें: कार्य बनाएं, उन सभी को बनाया जाएगा।

solutions = ["something.sln", "another.sln", "etc"] 
solutions.each do |solution| 
    #loops through each of your solutions and adds on to the :build task 

    msbuild :build do |msb, args| 
    msb.properties :configuration => :Release, 
    msb.targets [:Test] 
    msb.solution = solution 
    end 
end 

rake build बुला या किसी अन्य कार्य के लिए अपने समाधान के सभी निर्माण करेगा में एक निर्भरता के रूप में :build को निर्दिष्ट।

विकल्प # 2

विकल्प 2 मूलतः एक ही है मैं सिर्फ क्या पता चला है ... सिवाय आप MSBuild वर्ग सीधे msbuild कार्य के बजाय कॉल कर सकते हैं

msb = MSBuild.new 
msb.solution = ... 
msb.properties ... 
#other settings... 

इस आइए आपके द्वारा बनाए गए एक काम जो भी आप चाहते हैं, और फिर आप जहां भी चाहें अपना लूप कर सकते हैं। उदाहरण के लिए:

task :build_all_solutions do 
    solutions = FileList["solutions/**/*.sln"] 
    solutions.each do |solution| 
    build_solution solution 
    end 
end 

def build_solution(solution) 
    msb = MSBuild.new 
    msb.properties :configuration => :Release, 
    msb.targets [:Test] 
    msb.solution = solution 
    msb.execute # note: ".execute" replaces ".build" in v0.2.x of albacore 
end 

अब, जब आप rake build_all_solutions आपको कॉल या किसी अन्य कार्य पर एक निर्भरता के रूप में :build_all_solutions जोड़ने के लिए, अपने समाधान के सभी निर्माण किया जाएगा।

...

वहाँ शायद एक दर्जन से अधिक रूपांतरों को किया जा सकता है मैं यहाँ क्या दिखाया है के आधार पर कर रहे हैं। हालांकि, वे महत्वपूर्ण रूप से भिन्न नहीं होते हैं - सभी समाधानों को खोजने के लिए कुछ अलग-अलग तरीके, या उनके माध्यम से लूप।

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

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