我在 cygwin 上使用了 mono mkbundle 来编译一个点网应用程序,它工作正常。我使用了这里的说明c# cywgwin mono mkbundle windows 7 - cannot compile file
除非以下文件(从 mono/bin 复制)文件夹与应用程序位于同一文件夹中,否则完成的应用程序将不会运行:mono.dll、libglib-2.0-0.dll、libgthread-2.0-0.dll、zlib。 dll
这一切似乎都很好 - 但是如果我运行命令(来自 cygwin)
$ objdump -p mycompiledapp.exe | grep "DLL Name"
(其中“mycompiledapp.exe”是应用程序的名称)
文件 mono.dll、libglib-2.0-0.dll、libgthread-2.0-0.dll 已经嵌入到我的应用程序中。
当这些文件已经嵌入到我的应用程序中时,为什么它们需要与我的应用程序位于同一文件夹中才能运行?
编译时我做错了什么吗?
有没有办法:
a)不将这些程序集嵌入我的应用程序(以便它们可以与它一起分发)
b)编译我的应用程序,以便它知道这些程序集嵌入在应用程序中,并使用它们?(并且不必与应用程序一起分发这些文件)
当它们已经嵌入其中时,将这些文件与我的应用程序一起分发似乎很痛苦!(特别是考虑到这些程序集的大小 - 一个 50k dot net 应用程序作为编译后的单应用程序变成大约 5megs,并且这需要与额外的 4megs 程序集一起分发才能运行......e)
谢谢你的任何信息,
铁匠铺