【发布时间】:2017-11-07 22:29:22
【问题描述】:
我编写了一个简单的程序,并用dotnet publish -c Release -r osx.10.11-x64编译了它
它会创建一个运行良好的二进制文件,但是如果我将此文件移动到其他位置而没有同一目录中的其他文件,则程序将无法运行:
A fatal error occurred, the required library libhostfxr.dylib could not be found at /Users/me/
有没有办法让二进制文件独立?
我记得在 Windows 和 .NET 上可以使用 ILMerge(但它使用 .dll 文件,而不是 .dylib)
【问题讨论】:
-
如果您使用命令行编译器,通常所有旧命令仍然有效。 dll、library 和 exe 在结构上都非常相似。 dll 和 exe 之间唯一真正的区别是 exe 必须具有 main() 而 dll 是可选的。 dll 实际上是旧库的较新版本,其中 dll 首次用于 Window95。旧库是 obj 的简单合并,其中每个方法都可以从可执行文件中调用。 dll 只是在旧库格式(obj 的合并)周围添加了一个新包装器。
-
我不明白你的意思。它如何帮助我合并编译生成的文件并只创建一个独立的可执行文件?我什至无法尝试使用 ILMerge,因为我使用的是 Mac。
-
@jdweng 这是一个 OSX 问题
-
@jdweng 我尝试使用
csc *.cs进行编译,当我运行./Program.exe时,终端返回错误:zsh: exec format error: ./Program.exe。该程序似乎不是为 OSX 编译的