news 2026/8/23 10:35:10

.net程序部署Linux运行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
.net程序部署Linux运行

一、前言

  • 目前,我所尝试的只有.net8.0及以上才可部署Linux,所以着重讲.net8.0部署Linux;
  • 若你想,项目升级可看我上期:升级.net472项目步骤,经验分享!-CSDN博客

二、项目生成

1、提前在vs内,把配置文件中所使用的IP更改为虚拟机的所使用的IP方便部署;
2、打开项目启动文件文件夹,打开终端

3、输入命令,后回车;

dotnet publish -o auth

I、auth文件就是你需要部署在Linux上的文件;

II、最好剪切放到别的地方,否则会影响vs项目生成;

三、部署Liunx

前言:有很多种方式来启动,这里我就说一下用dotnet启动的方式;
1、以Ubuntu_22.04.05为例,其他也都一样。

2、把上方auth直接复制到Ubuntu虚拟机上(若您是终端虚拟机,把auth压缩,然后再终端下载解压工具,解压到指定位置);

3、若auth的配置文件,你生成前已经改好配置就不需要再改动了,否则手动改动配置文件,如:IP、Port;终端虚拟机,则需要通过iv编辑器更改;或者重新生成,复制过来;

4、右击打开Linux终端,下载dotnet服务,可以根据自己的版本,来更改下方版本;

如你是20.04就把22.04改了就行;

# 下载并安装 Microsoft 包签名密钥 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb # 更新包列表 sudo apt-get update

5、安装.net core运行时库,可以根据自己的版本,来更改下方版本;

如你是.net10.0就把8.0改了就行;

sudo apt-get install -y dotnet-runtime-8.0

验证安装:

dotnet --list-runtimes

正确样例:

Microsoft.AspNetCore.App 8.0.30 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 8.0.30 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

6、运行.net程序,注意这在auth文件下右击打开终端,否则会找不到文件;

dotnet 启动文件名称.dll

要么使用绝对路径

dotnet /home/用户名/publish8.0/auth/启动文件名称.dll

博主的是:dotnet GameService.dll

7、系统后台运行

需要日志:

nohup dotnet GameService.dll > output.log 2>&1 &

不需要则:

nohup dotnet GameService.dll &
  • nohup:让程序在后台运行,不受终端关闭影响。
  • dotnet GameService.dll:你的启动命令。
  • > output.log:将标准输出重定向到 `output.log文件(可选,建议指定日志文件以便排查问题)。
  • 2>&1:将标准错误输出也重定向到同一个日志文件。
  • &:让命令在后台执行。

终止后台运行:

# 查找进程 ps -ef | grep GameService.dll # 杀死进程 kill -9 <PID>

四、部署失败

启动失败问题

1、如你按照我上述步骤,仍失败,可以考虑是否项目为.net8.0及以上,是否支持Linux;

2、启动期间是否有代码报错,有的话改;

3、根据终端报错提示,是否缺少工具导致,缺少的话根据终端提示下载工具;

项目升级后生成成功,启动失败

1、博主的websocket、mqtt服务,生成期间,没有报错,启动也没有报错,但一部署就报错,显示什么端口被占用等没用的错误提示,但根本就不是因为端口被占用,而是因为Linux不支持不兼容的库;

2、这就是因为你升级后,虽然window的vs兼容了它,但Linux不兼容;

3、需要做的是,直接发送AI,如.net8.0部署Mqtt,把我们的服务使用的包替换为新的,一般只会该一些头部实例,并不会很麻烦;

4、主要你所使用的包是否支持Linux,如websocket的Fleck库,是不支持Linux的,是必须替换掉的,可以换成WebSocketSharp库等;

5、你可以把报错的服务或者代码发送AI,询问是否支持部署Linux;

6、这里主要提供思路,遇到错误至少知道往哪方面去找;

后缀:

像启动方式还有mono 运行文件、./运行文件;

这两个我就不再赘述了,我用的不怎么好,上方这个学会就够用了;

祝大家,再老的项目部署也包成功的好吧!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 10:34:19

macOS AMD显卡不被识别?用NootRX让rDNA 2驱动一次跑通

macOS AMD显卡不被识别&#xff1f;用NootRX让rDNA 2驱动一次跑通 【免费下载链接】NootRX The rDNA 2 dGPU support patch kext. 项目地址: https://gitcode.com/gh_mirrors/no/NootRX NootRX 是面向 macOS AMD 显卡驱动的内核扩展&#xff08;kext&#xff09;&#x…

作者头像 李华
网站建设 2026/8/23 10:31:51

C++模板进阶:成员函数模板与显式实例化实战解析

1. 项目概述&#xff1a;从“会用”到“懂行”的模板进阶 在C的模板编程世界里&#xff0c;很多朋友在掌握了类模板和函数模板的基础用法后&#xff0c;会觉得模板也就那么回事——不就是写个 template &#xff0c;然后让编译器去生成代码嘛。但当你开始阅读一些高质量的库源…

作者头像 李华
网站建设 2026/8/23 10:30:35

Atmosphere EmuMMC 启动失败?4步从卡启动画面修回正常开机

Atmosphere EmuMMC 启动失败&#xff1f;4步从卡启动画面修回正常开机 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 满怀期待按下电源键&…

作者头像 李华
网站建设 2026/8/23 10:29:50

线束车间MES系统建设指南:从核心价值到实施路径

这次我们来看一个在制造业数字化转型中非常具体且关键的议题&#xff1a;线束车间MES系统的建设。对于汽车、家电、通信设备等大量使用线束的行业来说&#xff0c;车间管理的精细化程度直接决定了生产效率、成本和质量。一个合适的MES&#xff08;制造执行系统&#xff09;不再…

作者头像 李华
网站建设 2026/8/23 10:29:36

操作系统进程与线程核心解析:从原理到高并发实践

1. 项目概述&#xff1a;为什么“进程与线程”是操作系统的灵魂与考研必争之地刚接触操作系统&#xff0c;尤其是备战计算机考研的同学&#xff0c;大概率会对“进程”和“线程”这两个概念感到既熟悉又头疼。熟悉是因为它们无处不在&#xff0c;任何一本教材、任何一门课程都会…

作者头像 李华