2016-04-20 9 views
5

Ich habe kürzlich herausgefunden, dass ich Swift-Befehlszeilenskripts erstellen kann.Befehlszeile "Startpfad nicht zugänglich"

Ich beschloss zu sehen, ob ich mein Xamarin-Projekt damit bauen könnte.

Leider bekomme ich den folgenden Fehler und ich weiß nicht, wie ich es beheben kann.

*** Beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException' Grund: 'Startpfad nicht erreichbar'

Hier ist mein Skript:

#!/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) 
} 

Irgendwelche Gedanken?

Antwort

4

ich denken das Problem ist, dass Sie tatsächlich die Shell ausführen möchten, und haben sie die mdtool ausführen, anstatt mdtool direkt ausführen

Versuchen vorbei „/ bin/bash“ als launchpath, und dann schließen der Pfad zu mdtool als Teil der Argument-Zeichenfolge.

+0

Wenn ich den Code so geändert habe, dass er wie folgt aussieht: shell ("/ bin/bash", Argumente: ["/ Programme/Xamarin \\ Studio.app/Contents/MacOS/mdtool", "-v build", " \ "- Konfiguration: Beta | iPhone \" "," MyApp.iOS.sln "])" Ich bekomme jetzt länger die Ausnahme. Stattdessen bekomme ich '/ bin/bash:/Anwendungen/Xamarin \ Studio.app/Contents/MacOS/mdtool: Keine solche Datei oder Verzeichnis' – mgChristopher

+0

interessant - Ich frage mich, ob die Flucht aus dem Weltraum notwendig ist? Oder vielleicht brauchen Sie eine einzige \ statt \\? Ich würde damit spielen oder versuchen, einen Symlink zu erstellen, der nicht den Platz darin hat? – Jason

+1

Ich habe es funktioniert! 'shell ("/bin/bash ", Argumente: [" -c "," '/ Programme/Xamarin Studio.app/Contents/MacOS/mdtool' -v build '- Konfiguration: Beta | iPhone' MyApp.iOS. snn "])' Du hast geholfen, war von unschätzbarem Wert. Was ist der beste Weg, die Antwort darauf zu teilen? – mgChristopher

Verwandte Themen