我正在尝试在Ubuntu上编译和运行一个独立的C#二进制文件,但是我遇到了安装库的问题。我的理解是,如果我为特定的运行时发布,那么它应该能够在不安装.so
文件和二进制文件的情况下运行,或者我做出错误的假设?
当我尝试在publish
目录之外运行应用程序时,我得到:
无法解析库符号hostfxr_main,错误:./ neoj:undefined symbol:hostfxr_main
分段失败(核心转储)
如果我列出已安装的dotnet软件包,它目前看起来像这样:
dotnet-host / xenial,现在2.0.0-preview2-25407-01-1 amd64 [已安装,自动]
dotnet-hostfxr-2.0.0 / xenial,现在2.0.0-1 amd64 [已安装,自动]
dotnet-runtime-2.0.0 / xenial,现在2.0.0-1 amd64 [已安装,自动]
dotnet-sdk-2.0.2 / xenial,现在2.0.2-1 amd64 [已安装]
似乎存在一些差异,但如果我安装了SDK,这些差异就会自动进入。
如果我使用ldconfig -p | grep libhostfxr
来检查库,那么可以预见,它不会返回任何结果。我尝试在配置文件中添加/usr/share/dotnet/
,在该目录中添加符号链接到.so
文件并更新缓存(sudo ldconfig
),这会导致库被添加到缓存中,但是尝试运行命令时仍然没有快乐。
我尝试通过将运行时框架版本更新为2.0.0来解决此问题,这导致了更友好的错误消息,但结果相同。
源文件是all here,以防它不明显!