命令行"启动路径无法访问"

mgC*_*her 9 xamarin.ios xamarin swift osx-elcapitan

我最近发现我可以创建Swift命令行脚本.

我决定看看我是否可以使用它来构建我的Xamarin项目.

不幸的是我收到以下错误,我不知道如何解决它.

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'启动路径无法访问'

这是我的脚本:

#!/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)
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Jas*_*son 8

认为问题是你实际上想要执行shell并让它执行mdtool,而不是直接执行mdtool

尝试传递"/ bin/bash"作为启动路径,然后包含mdtool的路径作为参数字符串的一部分.

  • 我有它的工作!`shell("/ bin/bash",参数:[" - c","'/ Applications/Xamarin Studio.app/Contents/MacOS/mdtool'-v build' - configuration:Beta | iPhone'MyApp.iOS. sln"])`你的帮助非常宝贵.分享答案的最佳方式是什么? (2认同)