问题标签 [mkbundle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1153 浏览

linux - 如何在 Linux 上捆绑 Mono / GTK# 应用程序?

这是我遇到的问题:我使用 MonoDevelop 编写了一个 Gtk# 程序,它运行良好。但现在我希望能够在其他 Linux 机器上运行它而无需安装 MonoDevelop。

我的解决方案有两个项目:主 Gtk# 应用程序和它所依赖的 C# 库项目。因此,当我构建主项目时,它会生成 MainProject.exe 和 MainProject.exe.mdb,以及 bin/Release 文件夹中的 DependencyProject.dll。

我尝试运行以下命令将其全部打包到一个可执行文件中(从 bin/Release 文件夹运行):

但是,我从运行该命令得到这个错误:

未处理的异常:

System.IO.FileNotFoundException:无法加载文件或程序集“gtk-sharp”或其依赖项之一。该系统找不到指定的文件。

文件名:'gtk-sharp'

在 System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, Boolean refonly) [0x00000] in :0

在 (wrapper remoting-invoke-with-check) System.AppDomain:Load (string,System.Security.Policy.Evidence,bool)

在 System.Reflection.Assembly.ReflectionOnlyLoad (System.String assemblyString) [0x00000] in :0

在 IKVM.Reflection.Universe.DefaultResolver (System.String refname, Boolean throwOnError) [0x00000] in :0

在 IKVM.Reflection.Universe.Load (System.String refname, IKVM.Reflection.Module requestingModule, Boolean throwOnError) [0x00000] in :0

在 IKVM.Reflection.Universe.Load (System.String refname) [0x00000] in :0

在 MakeBundle.QueueAssembly(System.Collections.Generic.List`1 文件,System.String 代码库)[0x00000] 中:0

[错误] 致命的未处理异常:System.IO.FileNotFoundException:无法加载文件或程序集“gtk-sharp”或其依赖项之一。该系统找不到指定的文件。

文件名:'gtk-sharp'

在 System.AppDomain.Load (System.String assemblyString, System.Security.Policy.Evidence assemblySecurity, Boolean refonly) [0x00000] in :0

在 (wrapper remoting-invoke-with-check) System.AppDomain:Load (string,System.Security.Policy.Evidence,bool)

在 System.Reflection.Assembly.ReflectionOnlyLoad (System.String assemblyString) [0x00000] in :0

在 IKVM.Reflection.Universe.DefaultResolver (System.String refname, Boolean throwOnError) [0x00000] in :0

在 IKVM.Reflection.Universe.Load (System.String refname, IKVM.Reflection.Module requestingModule, Boolean throwOnError) [0x00000] in :0

在 IKVM.Reflection.Universe.Load (System.String refname) [0x00000] in :0

在 MakeBundle.QueueAssembly(System.Collections.Generic.List`1 文件,System.String 代码库)[0x00000] 中:0

我看到了一些其他类似问题的 Stack Overflow 问题,但没有一个提供任何实用的解决方案。如何mkbundle有效地使用此命令?

0 投票
1 回答
393 浏览

mono - Mkbundle 不适用于简单程序

我在这里错过了什么......?

在 Ubuntu 服务器(14.04.3 LTS)上安装后,我正在运行一些健全性测试mono,并在尝试mkbundle从单站点获得的简单测试应用程序时遇到一些问题。

测试应用程序如下所示:

hello.exe我使用mcs.

但是,当我随后运行时mkbundle -o hello hello.exe --deps,此步骤失败。结果消息如下:

这是我第一次合作,mkbundle所以如果我错过了一些关键步骤,我不会感到惊讶。有人对这个谜题有什么想法吗?

我正在运行安装的mono-complete软件包。

0 投票
1 回答
466 浏览

linux - mkbundle System.ComponentModel.Win32Exception 错误

我正在尝试在 archlinux 上捆绑我在 monodevelop 中制作的应用程序。

在 monodevelop 中构建应用程序后,我将使用以下命令制作一个捆绑包:

但输出是:

因为我正在静态链接单声道,所以我必须从 AUR 安装 mono-git 以确保我拥有静态库。

我也不确定为什么它as -o temp.o temp.s列出了两个。

任何帮助,将不胜感激。

编辑 23NOV:我刚刚重新确认ascc已安装。版本输出位于: http: //pastebin.com/ka25tjWZ

编辑 24NOV:如接受的答案中所述;我的单声道没有正确编译。我使用带有以下 PKGBUILD 的 abs 进行了重建,它现在按预期工作。

0 投票
0 回答
192 浏览

macos - MKBundled Mono Exe 检查库文件夹中的依赖关系

我在 Mac 中使用 Mono 捆绑了一个 Exe

它成功地生成了本机应用程序 myapp。我从 mono 文件夹中复制了 lib 目录并将其粘贴到桌面上,因为该应用程序使用GTK作为用户界面。

我正在尝试使用以下script.sh启动应用程序

如果我从库文件夹中删除 Mono.Framework , 则应用程序成功启动,前提是 Mono 安装在库文件夹中,我收到以下错误

在此处输入图像描述

我的问题不是用于将 Mono Runtime 包含在 Exe 中并生成非依赖本机代码的静态标志(我已为其设置 DYLIB 路径的 GTK 除外),为什么它在库文件夹中寻找 Mono?

0 投票
0 回答
147 浏览

mono - mkbundle 生成的二进制文件在 ARMv7h 上导致 SIGSEGV,而在 Mono 中运行良好

我目前正在 ARMv7h 上的 archlinux 中测试 Mono。首先,我测试了这个简单的程序:

我使用 Mono 作为通过 安装的本机包pacman,而不是交叉编译。运行时,它的行为符合预期:

当我尝试使用 捆绑这个程序集mkbundle时,它编译时没有任何错误:

/usb/ 是已安装的外部 USB 驱动器。mkbundle作为 root 调用。当我尝试运行结果二进制文件时:

并返回外壳。二进制文件不提供任何附加信息。我错过了这个特定架构的标志吗?

0 投票
1 回答
180 浏览

xamarin - 如何使用 mkbundle --static 标志为 mac 控制台应用程序构建 pkg

我使用 Xamarin Studio 编写了一个控制台 Mac 实用程序。
然后我使用以下方法创建了一个包:

  • mkbundle myapp.exe *.dll -o myapp --deps
  • pkgbuild --analyze --root 发布名称.plist
  • pkgbuild --root 发布 --component-list name.plist --sign "john doe" --install_location /Applications/myapp myapp.pkg

在另一台机器上安装 myapp.pkg 并尝试运行该应用程序时,出现运行时错误“从 myapp 引用的 libmonoboehm-2.0.1.dylib - 找不到图像”。

这表明该机器没有安装单声道运行时。这是正确的,它没有安装单声道运行时。

我尝试使用“--static”选项运行 mkbundle。但是,然后 pkgbuild --analyze 返回一个空的组件列表。

我的问题是如何在使用带有 --static 标志的 mkbundle 时构建部署 pkg?这可能吗?

提前致谢

0 投票
0 回答
526 浏览

linker - 在使用时使用 mono mkbundle 工具创建静态编译的二进制文件

我正在尝试使用 mkbundle 生成静态编译的二进制文件,但是在涉及使用<bindingRedirect>配置文件的依赖项时遇到问题。

如果提供了 --deps 选项,mkbundle 会尝试加载引用的程序集,但找不到在运行时根据 app.config 中的 bindingRedirect 重定向的引用。

<bindingRedirect>使用 mkbundle 时处理依赖关系的正确方法是什么?

命令:

user@user-lubuntu: mkbundle --deps --static Integrate.ServiceName.Gateway.exe *.dll -o newbin

结果:

我们通读了这个类似的 stackoverflow 问题: Mkbundle Mono Assembly binding redirection

但是,手动包含文件的解决方案似乎对我们不起作用:

命令:

user@user-lubuntu: mkbundle --nodeps --static Integrate.ServiceName.Gateway.exe ALL_PACKAGES_WITH_FULL_PATH_SEPARATED_BY_SPACES -o newbin

结果:

user@user-lubuntu: ./newbin

0 投票
0 回答
599 浏览

gcc - 使用 Mono 的 mkbundle 从 linux 交叉编译 ARM

我正在尝试使用 Mono 的 mkbundle 工具从 AMD64 系统(在 VM 中运行的 Ubuntu 14.04)为 ARM(RaspberryPi)编译本机应用程序。

Mono 版本是 4.4.2.11(最新,在这样做的时候),从Mono 的包存储库安装,但也尝试使用 4.2.3.4。

我在跑:

如果我在 RaspberryPi 本身上运行它,这很好用(尽管我不需要设置 CC 和 AS 变量)。

如果我从我的 AMD64 VM 运行它,它最终会运行以下命令:

结果是:

/usr/lib/pkgconfig/../../lib/libmono-2.0.a:添加符号时出错:文件格式无法识别 collect2:错误:ld 返回 1 退出状态


意识到它libmono-2.0.a来自特定于架构的包,我从http://download.mono-project.com/repo/debian/pool/main/m/mono/下载了 armel 架构包并将其解压缩到我的主目录中(所以有一个/home/gregmac/libmono-armel/usr/lib/libmono-2.0.a),然后尝试:

我也尝试将 LIBRARY_PATH 和 LD_LIBRARY_PATH 设置为/home/gregmac/libmono-armel/usr/lib,但总是遇到同样的问题。

完整输出(包括 -v 选项):


我也尝试了相同的命令,但没有--static,并得到相同的错误,但关于.so而不是.a文件:

/usr/lib/pkgconfig/../../lib/libmono-2.0.so:文件无法识别:文件格式无法识别 collect2:错误:ld 返回 1 退出状态


我在这里遗漏了一些明显的东西吗?为什么 gcc 仍在寻找/usr/lib/而不是/home/gregmac/libmono-armel/usr/lib?我应该设置其他一些环境变量,以便原始mkbundle命令可以正确调用它吗?

0 投票
2 回答
977 浏览

c# - 在 Windows 上,mkbundle 因链接器错误而失败

我正在尝试构建一个需要在可能未安装 .NET 的环境中运行的控制台实用程序。Mono 的 mkbundle 似乎是解决这个问题的一个很好的解决方案,但是当通过 cygwin 在 Windows 10 上运行 mkbundle (Mono 4.6.1.3) 时,这是我收到的输出:

为了做到这一点,我安装了最新的 windows SDK 并设置了 INCLUDE 和 LIB 环境变量,但我对如何解决这些链接器错误有点困惑。

0 投票
0 回答
211 浏览

c# - C# winforms Mono mkbundle - 'as' 未被识别为内部或外部命令、可运行程序或批处理文件

我一直在尝试让我的 C# winforms 应用程序使用 Mono 在 Linux 和 Mac 上运行。该程序使用以下方法运行并正常工作:

但是,我想将 Mono 与程序打包,所以我一直在使用 mkbundle 命令。我的确切输入是这样的:

Mono 似乎可以很好地嵌入所有 dll(最后是第 3 方),但随后输出此错误:

关于问题出在哪里的任何线索?