在Linux上的PATH中安装dotnet可执行文件

时间:2019-07-05 14:32:04

标签: .net linux .net-core

我正在尝试构建可执行文件,然后通过将其复制到/usr/local/bin中来“安装”它,以便可以直接在bash中运行。

我这样构建我的项目:

$ dotnet publish -c Release --self-contained -r linux-x64 -o out

这将创建一个这样的目录(它还包含许多.DLL文件):

$ ls bionitio/out/bionitio*
bionitio/out/bionitio
bionitio/out/bionitio.deps.json
bionitio/out/bionitio.dll
bionitio/out/bionitio.pdb
bionitio/out/bionitio.runtimeconfig.json
[...]

然后我可以直接执行它,效果很好:

$ bionitio/out/bionitio --help


Usage: bionitio [arguments] [options]

但是如果我将其复制到更全局的位置,它将失败:

$ cp bionitio/out/bionitio /usr/local/bin
$ /usr/local/bin/bionitio --help
A fatal error occurred, the required library libhostfxr.so could not be found at /usr/local/bin/

但是,我正在使用--self-contained标志来构建它,为什么它仍然取决于libhostfxr.so

1 个答案:

答案 0 :(得分:1)

自包含选项与应用程序一起发布运行时,它在同一目录中发布,而不是打包在单个输出文件中。

它删除了已安装框架对目标计算机的依赖性。您需要将所有已发布的文件复制到要从中运行应用程序的目录。

  

-自包含

     

与您的应用程序一起发布.NET Core运行时,以便运行时   不需要在目标计算机上安装。如果运行时   指定了标识符,其默认值为true。

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish