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?
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
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
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