2016-04-20 30 views
5

Kısa süre önce Swift komut satırı komut dosyaları oluşturabildiğimi öğrendim.Komut satırı "başlatılamadı yolu"

Xamarin projemi kullanarak oluşturabilir miyim diye karar verdim.

Maalesef aşağıdaki hatayı alıyorum ve nasıl düzelteceğimi bilmiyorum.

*** nedeniyle yakalanmamış istisna 'NSInvalidArgumentException' için neden uygulamasını Sonlandırma: 'fırlatma yolunu değil erişilebilir' İşte

benim senaryom:

#!/usr/bin/env swift 

import Foundation 

print("Building Script") 

let fileManager = NSFileManager.defaultManager() 
let path = fileManager.currentDirectoryPath 

func shell(launchPath: String, arguments: [String] = []) -> NSString? { 

    let task = NSTask() 
    task.launchPath = launchPath 
    task.arguments = arguments 

    let pipe = NSPipe() 
    task.standardOutput = pipe 
    task.launch() 

    let data = pipe.fileHandleForReading.readDataToEndOfFile() 
    let output = NSString(data: data, encoding: NSUTF8StringEncoding) 

    return output 
} 

if let output = shell("/Applications/Xamarin\\ Studio.app/Contents/MacOS/mdtool", arguments: ["-v build", "\"--configuration:Beta|iPhone\"", "MyApp.iOS.sln"]) { 
    print(output) 
} 

herhangi bir düşünce?

cevap

4

ben sorun düşünüyorum aslında kabuk yürütmek istiyoruz ve doğrudan mdtool yürütmek yerine, mdtool yürütmek olması

launchpath olarak "/ bin/bash" geçen deneyin ve ardından dahil argüman dizesinin bir parçası olarak mdtool'a giden yol.

+0

Kodu değiştirdiğimde bu kabuk ("/ bin/bash" gibi) argümanları: ["/ Applications/Xamarin \\ Studio.app/Contents/MacOS/mdtool", "-v build", " \ "- yapılandırma: Beta | iPhone \" "," MyApp.iOS.sln "]) Artık istisnayı daha uzun sürüyorum. Bunun yerine ben/bin/bash:/Applications/Xamarin \ Studio.app/Contents/MacOS/mdtool: Bu tür bir dosya veya dizin yok – mgChristopher

+0

ilginç - alandan kaçmak gerekip gerekmediğini merak ediyorum? Ya da belki de \\ yerine bir bekletmeye ihtiyacınız var? Bununla oynar mıyım yoksa içinde boşluk olmayan bir sembolik bağlantı oluşturmayı deneyebilir miyim? – Jason

+1

Çalışıyorum! shell ("/ bin/bash", argümanlar: ["-c", "'/ Uygulamalar/Xamarin Studio.app/Contents/MacOS/mdtool' -v build '- yapılandırma: Beta | iPhone' MyApp.iOS. sln "]) Yardımınız çok değerli oldu. Bu cevabı paylaşmanın en iyi yolu nedir? – mgChristopher