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

在Linux(WSL2 Ubuntu22.04)运行C#项目缺失依赖求助

解决WSL2 Ubuntu 22.04中dotnet test找不到libdl的问题

问题背景

在WSL2 Ubuntu 22.04环境下,已通过以下步骤编译C#项目:

sudo apt install dotnet-sdk-6.0
cd <包含csproj文件的项目目录>
dotnet build

执行dotnet test时抛出异常:

测试方法Foo引发异常:
System.TypeInitializationException:“Bar”的类型初始值设定项引发异常。---> System.DllNotFoundException: 无法加载共享库“dl”或其依赖项。为帮助诊断加载问题,请考虑设置LD_DEBUG环境变量: libdl: 无法打开共享对象文件: 没有那个文件或目录 [...]

用户确认Ubuntu环境正常,libdl.so未损坏。

解决方案

1. 修正DllImport的库名称

C#代码中若使用[DllImport("dl")]调用libdl函数,Linux下实际需指定的库名为libdl,动态链接器会自动补全后缀。修改代码中的导入声明:

[DllImport("libdl", SetLastError = true)]
public static extern IntPtr dlopen(string fileName, int flags);

2. 重新安装系统依赖包

libdl属于libc6-dev包的一部分,执行以下命令确保依赖完整:

sudo apt update && sudo apt install --reinstall libc6-dev

3. 配置动态链接库搜索路径

临时添加libdl所在路径到环境变量后再运行测试:

export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
dotnet test

若需永久生效,将上述export命令添加到~/.bashrc或~/.zshrc文件,执行source ~/.bashrc(对应使用的shell)使设置生效。

4. 验证框架与运行时兼容性

执行dotnet --info查看当前运行时信息,确认项目目标框架(如net6.0)与已安装的dotnet-sdk-6.0版本完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:12:13