在OSX上部署由mono mkbundle创建的.Net应用程序,无需单声道运行时

时间:2014-10-20 08:02:25

标签: .net macos mono mkbundle

我正在尝试创建用于部署使用mono 3.10.0和mkbundle

编译的.Net应用程序的包

mkbundle命令行:

mkbundle --deps -o $V_OUTPUT_FILE_NAME $V_Target_FILES

创建了包,但是当我在没有单一框架(Maverick OS)的机器上运行它时,我收到以下错误。

  dyld: Library not loaded: /Library/Frameworks/Mono.framework/Versions/3.10.0/lib/libmonoboehm-2.0.1.dylib
  Referenced from: /Applications/MyApp.app/Contents/Resources/./MyApp.exe
  Reason: image not found
  Trace/BPT trap: 5

从mkbundle文档我明白--deps参数应该将所有必需的库链接到我的包中,并且由于许可问题,我不想使用--static标志。

我能够在不需要安装单声道框架的情况下部署我的OSX应用程序。

我需要将哪些文件包含在我的安装中才能在没有安装单声道框架的OSX机器上运行。

2 个答案:

答案 0 :(得分:0)

如果您不使用--static,目标计算机将需要安装Mono框架。

没有办法解决这个问题。

答案 1 :(得分:0)

如果您不想使用--static,则需要使用MyApp二进制文件发送libmonoboehm-2.0.1.dylib。

然后,您需要使用install_name_tool更改MyApp二进制文件,以从正确的位置加载libmonoboehm-2.0.1.dylib。

假设您要发送应用程序包:

  1. libmonoboehm-2.0.1.dylib和MyApp二进制文件进入Contents / MacOS文件夹
  2. 使用下面粘贴的命令确保MyApp从正确的位置加载单声道。

    install_name_tool -change /Library/Frameworks/Mono.framework/Versions/3.10.0/lib/libmonoboehm-2.0.1.dylib @ executable_path / libmonosgen-2.0.1.dylib MyApp