You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core Web API发布至Ubuntu服务器依赖缺失问题求助

解决.NET Core Web API发布到Ubuntu的依赖缺失问题

嘿,作为C#新手碰到这种依赖找不到的问题太正常了,我来帮你一步步搞定~

首先得搞明白为啥会出现这个错误:你以为依赖会直接编译进.dll里,但其实.NET Core的发布机制不是这样的,它默认会把依赖项和你的应用代码分开管理,通过api.deps.json这个清单文件来记录需要的依赖包信息。如果服务器上找不到对应的依赖包,就会抛出你看到的那个错误。下面给你几个靠谱的解决办法:

方法一:用独立部署(Self-Contained)打包所有依赖

这个方法最适合新手,因为它会把.NET Core运行时(Runtime)和所有依赖包一起打包到发布目录里,不需要服务器提前安装.NET Core环境,上传就能跑。

执行发布命令:

dotnet publish -c Release -r ubuntu-x64 --self-contained true

参数解释:

  • -c Release:发布正式版本(比Debug版本更高效)
  • -r ubuntu-x64:指定目标运行环境是64位Ubuntu(如果你的服务器是32位,改成ubuntu-x86)
  • --self-contained true:告诉编译器把运行时和所有依赖都打包进来

发布完成后,找到项目目录下bin/Release/netX.x/ubuntu-x64/publish这个文件夹,把里面所有文件和文件夹都上传到Ubuntu服务器。然后给生成的可执行文件加执行权限:

chmod +x 你的应用名称

最后直接运行就行:

./你的应用名称

方法二:框架依赖部署(Framework-Dependent)

如果你希望服务器上共享.NET Core运行时,减小发布包大小,可以用这种方式,但需要确保服务器已经安装了对应版本的.NET Core Runtime。

  1. 先在Ubuntu服务器上安装.NET Core Runtime:
    打开终端执行对应版本的安装命令(比如.NET 6):
    sudo apt update && sudo apt install -y dotnet-runtime-6.0
    
  2. 本地发布命令:
    dotnet publish -c Release
    
  3. 同样要把bin/Release/netX.x/publish目录下的所有内容上传到服务器,不要只传单个.dll文件!
  4. 运行应用:
    dotnet 你的应用名称.dll
    

方法三:单文件发布(更省心的方式)

如果你想只生成一个文件上传到服务器,.NET Core 3.0及以上版本支持单文件发布,它会把所有内容打包成一个单独的可执行文件:

发布命令:

dotnet publish -c Release -r ubuntu-x64 --self-contained true /p:PublishSingleFile=true

发布完成后,你会得到一个单独的可执行文件,上传到服务器后加执行权限就能直接运行,超级方便!

关键提醒

你之前可能只传了单个.dll文件到服务器,这绝对不行!.NET Core应用需要api.deps.json、api.runtimeconfig.json这些配置文件,还有依赖包所在的refs、runtimes文件夹,这些都是运行必需的,一定要把整个发布目录的内容都传上去。

内容的提问来源于stack exchange,提问作者recursivePython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:03:31