问题标签 [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.
c# - mkbundle 组合 DLL 在其他项目中引用时导致 Invalid Metadata 异常
我有一个 .NET 4.0 解决方案,其中包含大约 10 个项目,我在 Ubuntu Desktop 12.04 上的 mono 2.10.8.1 上成功编译了这些项目,该解决方案在 VM 中运行。
我正在尝试运行 mkbundle 以将所有 10 个 DLL 组合成一个 DLL,然后我可以在其他解决方案中引用该 DLL(即一些将在更高级别的应用程序中大量重用的核心库)。
这就是我正在运行以构建解决方案:
然后我运行以下命令来组合 DLL:
这成功完成,我得到了 CoreApp.dll。
但是,当我尝试构建依赖解决方案时,出现以下异常:
如有必要,我很乐意提供更多信息。
mono - 单声道 mkbundle 和西里尔文路径
我正在使用 mkbundle 实用程序在 Windows 上将 Mono 与我的 WinForms 应用程序捆绑在一起。我已经按照这里描述的过程:Can not compile simple C# application with mkbundle。应用程序构建和运行得很好,但前提是可执行文件的路径不包含西里尔符号。如果路径包含此类符号(俄语中的文件夹名称等),应用程序根本不会启动(不显示错误消息)。似乎问题发生在托管代码运行之前。有什么方法可以诊断和解决这样的问题吗?我没有使用 C 代码的经验,所以我不知道应该在 host.c 文件或 GCC 选项中更改什么。
c# - 捆绑的 GTK# 应用程序不会在新的 Win7 安装上运行
我在 MonoDevelop 中为大学作业创建了一个 C# GTK# 应用程序,结果发现它无法在大学计算机上运行,因为我们没有安装 GTK# 或 Mono 库的管理员权限。经过一番研究,我发现了在 Cygwin 中使用 mkbundle 将所需的 DLL 与可执行文件捆绑在一起的技术。我按照以下说明进行操作:
http://www.joebest.org/2011/09/mono-and-mkbundle-on-windows.html
由于我在家时无法在大学计算机上进行测试,因此我正在完全干净安装 Win 7 Pro 64 位的虚拟机上进行测试。我的开发机器运行相同的操作系统,但在我的开发机器上进行测试没有意义,因为它已经拥有了它需要的所有库,而且我没有收到任何错误。
我可以很好地创建捆绑的可执行文件,没有麻烦。捆绑的可执行文件在我的开发机器上运行良好。当我尝试在干净的 Win 7 安装上运行它时,没有任何反应。没有窗口出现;没有错误信息;没有什么。我只知道它正在运行,因为当我双击可执行文件时,我可以在任务管理器的“进程”选项卡中看到它的名称出现一两分钟。
作为比较,如果我尝试运行未捆绑的应用程序,它会给出一条错误消息,提示我需要安装 .NET 4 运行时。如果我安装 .NET 4 运行时(我知道大学计算机安装了 .NET 4),那么应用程序会因以下错误而崩溃:
我已将 mkbundle 输出中显示的所有 DLL 添加到应用程序的文件夹中。如果我从文件夹中删除 glib-sharp.dll,错误将变为:
我还尝试使用 CorFlags.exe 更改 32BIT 标志,但它似乎对任何东西都没有任何影响。
我只是想知道是否有人知道接下来要尝试的事情,因为我完全被这个难住了。
macos - Mono c# 控制台应用程序,使用 mkbundle 错误创建独立
尝试为控制台创建一个可以在 Linux 上运行的独立应用程序,工作环境在 Mac os x 10.7 上。
1.) 打开 Monodevelop 并创建新的解决方案,一个“C# 控制台项目”。2.) 构建应用程序,exe 将在 bin/Release 文件夹中创建 3.) 在 mac os x 打开终端,转到文件夹并键入: mkbundle -o HelloTest HelloWorld.exe --deps
这将发生:
关于我做错了什么有什么建议吗?想要一个从 osx 开发的独立 linux 应用程序。拉我的头发几个小时。
c# - 如何判断我的应用程序是否与 Mono 捆绑在一起,而不是与 Mono 一起执行?
如何检查我的应用程序是否已使用单声道 (mono MyProgram.exe) 启动,或者是否已与使用 mkbundle 或类似工具嵌入的单声道运行时捆绑在一起?
c# - 带有 Mono 的 Mac 上的 mkbundle:找不到“mono/metadata/mono-config.h”文件
我正在尝试使用 Mono 创建一个 Mac 捆绑包。当我执行时:
我在编译期间得到这个:
我错过了什么吗?
c# - 将 C# 应用程序编译为本机可执行文件
我知道这个问题之前出现过几次,但我无法为我们的简单案例找到答案:
是否有免费工具可以将小型 .NET C# 应用程序编译为本机可执行文件?
到目前为止,我发现的是昂贵的工具,它们剥离了 .NET 框架并将其编译为可执行文件,但在我们的案例中,这不是必需的。安装 .NET 框架是没有问题的,我们只是想预编译一个 C# 项目,以便用户出于安全原因无法反编译 IL 代码。.NET 的 obsucator 是不够的,因为我们有敏感的代码部分。
Mono-AOT 不是一个选项,因为它需要在我所了解的目标机器上安装单声道。
Ngen.exe 似乎是最接近我们需要的,但是我们如何分发输出文件呢?它似乎也包含 IL 代码,正如它所说的“每当 NGen 生成的图像在不兼容的环境中运行时,.NET 框架都会自动恢复为使用 JIT”。
这种情况下是否有任何实用的工作流程?
EDIT2:我真的很想知道为什么这个问题被关闭了......
解决方案是来自 Mono 项目的mkbundle:
我找到了一个 shell 脚本,它使用 Mono 的 mkbundle 将 .NET 应用程序编译为独立的本机可执行文件,并将其修改为最新版本,截至 2013 年 5 月,您可以按如下方式使用该脚本:
https://gist.github.com/tebjan/5581296
1.) 安装 cygwin 并确保选择以下软件包: - gcc-mingw - pkg-config - mingw-zlib1 - mingw-zlib-devel
2.) 安装 Mono 发行包:“Mono for Windows, Gtk#, and XSP”
3.) 下载脚本并将其放在您的应用程序旁边并对其进行修改以适应您的环境(仔细阅读文件中的注释)。
4.) 打开 cygwin 并导航到可执行文件和 scipt 所在的应用程序的输出文件夹,例如 YourProject/bin/Release
5.) 使用以下命令执行脚本:./mkbundle_cygwin.sh
故障排除:如果捆绑的可执行文件无法运行,请确保原始 .NET 应用程序在单声道上运行。您可以通过调用 mono.exe 并将您的 .NET 应用程序传递给它或通过安装 XamarinStudio 并从那里运行您的项目来测试它(确保将 mono 设置为运行时)。
mono - 使用 Mono mkbundle 定位 SGEN 垃圾收集器
是否可以使用使用 sgen GC 的 mkbundle 捆绑 Mono 可执行文件?
我假设因为生成的包需要 libmono-2.0.so.1 而不是 libmonosgen-2.0.so,所以它使用标准的 boehm GC。我尝试过使用 $MONO_OPTIONS=--gc=sgen 但生成的包仍然需要非 sgen 库。
我是否误解了 libmono 和 libmonsgen 库的使用?
感谢您的任何帮助或指导
macos - OSX 上的 Mono mkbundle
我正在尝试使用 mono 的 mkbundle 创建一个独立的 C# 应用程序,我安装了 Xcode 和 Mono Developer Kit(我确定它是 MDK 而不是运行时)。然而我使用 mkbundle test.exe 运行 mkbundle
我得到了这些错误
发生了什么?
c# - 如何说服 mkbundle 包含 MonoPosixHelper?
我正在使用 mkbundle 并尝试创建一个使用 Isis2 的小程序 IdaTester 的嵌入式版本。该系统反过来使用依赖于 MonoPosixHelper 的 Mono 功能
我的问题是 mkbundle 无法识别依赖关系,我最终得到了一个仍然需要动态链接到 ~/bin/lib/libMonoPosixHelper.so 的可执行文件,当我将此可执行文件移动到我没有的系统时会导致问题安装了 Mono。实际上,bundle 缺少它应该静态链接的东西之一。
我的可执行文件确实有效,但前提是我确保仅在“正确位置”具有动态库的机器上运行它。这违背了嵌入式可执行文件的目的......我希望能够将这个程序作为一种服务器提供给人们,他们可以放在任何地方并作为二进制文件启动,显然如果他们需要安装库以使其工作,服务器并不完全独立!
我看到了如何强制 mkbundle 包含程序所依赖的任何 dll 文件,但 MonoPosixHelper 不作为 dll 存在;这是一个仅限 Linux 的库,仅作为共享库存在。有谁知道“强制”捆绑包静态嵌入它的方法?
如果这有帮助,我的小编译脚本如下:
然后我运行 IdaTester;这适用于可以找到 libMonoPosixHelper 库的平台,但如果在未安装 libMonoPosixHelper 的平台上运行,则尝试动态加载该库时将在运行时失败...