【问题标题】:Publishing .Net Core application in Linux在 Linux 中发布 .Net Core 应用程序
【发布时间】:2021-11-06 23:33:16
【问题描述】:

我有一个 .Net Core 5,我想在 Linux 机器上发布这个应用程序。

我在这台机器上安装了.net core 5 sdk。

我使用了dotnet publish AppName.sln,但我收到了“正在恢复包”消息,它在此时停止。 我没有得到发布目录或错误消息来找出导致此问题的原因。

我是否缺少运行 .net 核心应用程序的要求?

【问题讨论】:

  • 出于兴趣,您是否尝试使用 UI 使用 Visual Studio 进行发布?
  • @AliK 是的,我尝试在 Windows 中发布它,它工作正常。但问题只在linux上
  • 当您说“Windows 工作正常”和“问题仅在 linux 上”时,您是在 linux 系统上运行 dotnet publish 命令,还是在尝试发布部署 对于 Windows 上的linux?
  • @Kevingy 我在 Windows 上测试了该应用程序以查看它是否会创建发布文件夹并检查问题是否可能来自应用程序本身。我的主要目标是在 linux 机器上发布 .net 应用程序
  • @M.peace 如果你错过了,请在下面查看我的回答。

标签: .net linux .net-core .net-core-publishsinglefile


【解决方案1】:

@M.peace 当我部署到 Linux 时,我在 Windows 上发布应用程序并将文件复制到(部署到)Linux 系统。我从不在 Linux 上发布。我只部署到 Linux。这是一个重要的区别。以下是我的部分部署行动计划:

在 Linux 系统上:(对我来说,Debian。如果您不使用 Debian,这可能会有所不同。)

Install snapd
    (https://snapcraft.io/docs/installing-snap-on-debian)
    sudo apt-get install snapd
    sudo snap install core
Install .NET 5 Core SDK
    (https://docs.microsoft.com/en-us/dotnet/core/install/linux-snap)
    sudo snap install dotnet-sdk --classic --channel=5.0
    sudo snap alias dotnet-sdk-50.dotnet dotnet
    sudo ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet

然后,Windows 构建机器:

Publish Application
    Target Runtime = linux-x64
    Deployment Mode = Framework-dependent
    Zip publish folder and copy to host

我的发布设置是:

这就是在 Linux 上构建 .NET Core 项目所需要做的一切。为此,您需要将其配置为运行。如何做到这一点取决于项目是 Web 应用程序还是控制台应用程序。控制台应用程序相对简单。只需使用dotnet project.dll 运行它。 Web 应用需要配置 Apache 和 Kestrel。

【讨论】:

  • 我尝试在没有网络限制的不同 linux 机器上发布,并且成功了。我认为问题是由发布导致的,它试图从互联网恢复包,但由于私有网络,它无法正常工作。谢谢你的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2020-01-11
  • 1970-01-01
  • 2020-02-12
相关资源
最近更新 更多