在 Ubuntu 20.04 上运行 dotnet 应用程序

Posted

技术标签:

【中文标题】在 Ubuntu 20.04 上运行 dotnet 应用程序【英文标题】:Run dotnet application on Ubuntu 20.04 【发布时间】:2021-09-10 06:16:42 【问题描述】:

我是 Linux 网络核心的新手,我有一个问题。我安装了 .net core 5 并编写了名为“hello”的 hello world 应用程序。之后,我转到项目 bin 目录并运行我的应用程序:

dotnet hello.dll

一切都好。但我也在 bin 目录中看到“hello”(共享库)文件。我可以在终端中运行它:

./hello

所有作品... 但是当我将文件复制到另一个位置(远离项目目录)时,我无法像这样运行我的应用程序:./hello 我在终端中收到消息“分段错误(核心转储)”。

请告诉我,为什么在复制文件后,命令“./hello”不起作用(但 dotnet hello.dll 起作用)。

Ubuntu 20.04

.NET SDK 已安装:5.0.301

.NET 运行时安装:5.0.7

更新 项目地点:

/RiderProjects/RabbitMq-example/RabbitMq-example/bin/Debug/net5.0

我只将 net5.0 文件夹复制到:

/RiderProjects/RMQ/net5.0

我得到分段错误。

如果我复制完整的 bin 文件夹(如:

/RiderProjects/RMQ/bin/Debug/net5.0

一切都好。

步骤:

    创建文件夹(例如 HelloApp) 在文件夹中,打开终端并使用 dotnet new console 项目创建后,在此文件夹中使用dotnet publish(构建操作后会创建bin文件夹) (按当前步骤,我有 RiderProjects/HelloApp/bin/Debug/net5.0/publish) 将 publish/ 文件夹(包含文件)复制到另一个位置(在我的情况下,它是 RiderProjects/发布) 发布文件夹中的 dotnet HelloApp.dll 工作正常,但 ./HelloApp 不起作用

【问题讨论】:

原始文件夹(或相关文件夹)中是否还有其他dll文件?你是复制到同一个驱动器吗?你用什么命令来复制文件?复制的 dll 文件大小是否与原始文件完全相同?分段错误通常是由于对象超出了分配给应用程序的内存。 存在已知错误 (bugs.launchpad.net/ubuntu/+source/python-apt/+bug/1907676) 该错误已在 20.04.2.0 中修复。 你在复制前运行./hello,但在复制后运行./hello.sh,为什么? @LeiYang 对不起,拼写错误。我修好了。 @jdweng 我用 CTRL+C 复制它,然后通过 ubuntu 的用户界面用 CTRL+V 粘贴。是的,复制到同一个驱动器并且文件是原始大小。 【参考方案1】:

如果您通过 snap install 安装了 dotnet 运行时,则只能通过“sudo dotnet ...”访问它。我在 VS Code 中遇到了同样的问题,它在没有 sudo 的情况下运行 dotnet 命令,并且我收到了“分段错误(核心转储)”错误。我通过 apt-get 安装 dotnet 运行时解决了(现在安装在“/usr/bin ...”中并且无需 sudo 即可工作(参见:https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu#2004-))

【讨论】:

以上是关于在 Ubuntu 20.04 上运行 dotnet 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu 20.04 上使用远程证书的 Nuget 包还原失败无效

如何让 Steam 在 Ubuntu 20.04 上运行

我看不到在 ubuntu 20.04 上运行 docker compose 容器

aws codebuild dotnet:5.0 - 没有可用的 sdk 命令

在 Ubuntu 20.04 上更新犰狳 [关闭]

在 Ubuntu 20.04 上使用 Hadoop 进行新 Spark 设置后无法运行 spark-shell 命令