只编译成一个独立的二进制文件

时间:2017-11-07 11:02:46

标签: c# .net macos .net-core

我编写了一个简单的程序,然后用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

1 个答案:

答案 0 :(得分:1)

目前无法做到这一点。 .NET Core仍然是一个模块化系统,通过部署一个独立的应用程序,您基本上可以发送整个运行时的副本。虽然可以使用新链接器(在预览中)来减小托管程序集的大小(或使用ILMerge来合并所有托管程序集),但仍有一些本机资产(if (in_array($dim[0].'x'.$dim[1] .'--'.$key, $vrijednosti) { ... } )文件可供引用代码中的名称。

有一个不同的运行时项目 - CoreRT - 旨在通过提前编译托管部分来创建单个本机可执行文件。该项目仍在开发中。