.net - 在 linux 上将 dotnet 可执行文件安装到 PATH 中
问题描述
我正在尝试构建我的可执行文件,然后通过将其复制到“安装”它/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
?
解决方案
自包含选项与应用程序一起发布运行时,它发布在同一目录中,而不是打包在单个输出文件中。
它消除了已安装框架对目标机器的依赖。您需要将所有已发布的文件复制到要从中运行应用程序的目录。
——自给自足
与您的应用程序一起发布 .NET Core 运行时,因此不需要在目标计算机上安装运行时。如果指定了运行时标识符,则其默认值为 true。
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish
推荐阅读
- tabulator - 暴露更多行?
- java - Apache Beam 写入转换写入多个文件?
- javascript - 如何获取 _form-opc 的增量 id - 动态表单 Yii2
- ios - 无法加载证书,Xcode 构建无法安装证书(VSTS/Azure DevOps,YAML Pipeline)
- angular - 无法将 `Route` 和 `ActivatedRouteSnapshot` 注入 `HttpInterceptor`
- jekyll - Jekyll 嵌套包含与 for 循环
- angular - IONIC2 日历:想要在隐藏所有小时行后将下一个可用行偏移到顶部
- sql - 查询以显示一列相乘
- ios - iOS 12 模拟器黑屏
- php - 错误“遇到非数字值” - 我尝试更改 PHP 版本,但仍然显示错误