.net - 在 Linux 中发布 .Net Core 应用程序
问题描述
我有一个 .Net Core 5,我想在 Linux 机器上发布这个应用程序。
我在这台机器上安装了 .net core 5 sdk。
我用过dotnet publish AppName.sln
,但我收到“正在恢复包”消息,它在此时停止。我没有得到发布目录或错误消息来找出导致此问题的原因。
我是否缺少运行 .net 核心应用程序的要求?
解决方案
@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。
推荐阅读
- ios - Swift - 在 MapKit 上的多个图像之间切换的有效方法
- node.js - 在 Mocha/Chai/Sinon 中存根 DB 连接线
- git - 如何获取所有 git 提交到合并分支的列表?
- javascript - 我该如何使用
- java - java.io.FileNotFoundException 当我试图读入我的 Android Studio 项目中的二进制文件时
- android - Recyclerview 数据未通过协程获取
- code-coverage - 是否有任何工具可以显示 .drl 文件的代码覆盖率?我在 Then 部分有一些分支
- c++ - C++:在头文件中生成常量数组实例
- gpu - 如何使用 Vulkan 有效地计算汉明距离
- swift - macOS 上的 Swift:使用 URL 作为参数打开 Chrome