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

Ubuntu下用Mono mcs编译含Microsoft.Extensions.Configuration的C#程序报错求助

解决Mono mcs编译Microsoft.Extensions.Configuration程序的引用错误问题

问题根源

你引用的是**.NET 8版本**的Microsoft.Extensions.Configuration相关程序集,但当前使用的Mono 6.8.0.105仅兼容.NET Standard 2.0及更早的.NET Core版本,版本不匹配导致类型转发和基础引用错误。

正确解决步骤

1. 下载兼容版本的NuGet包

Mono 6.8适配.NET Standard 2.0,需下载对应版本的配置包:

# 安装适配.NET Standard 2.0的配置包版本
nuget install Microsoft.Extensions.Configuration -Version 3.1.31
nuget install Microsoft.Extensions.Configuration.Json -Version 3.1.31

2. 修正代码路径问题

Linux系统下路径分隔符为/,修改代码中的配置文件路径:

using System;
using Microsoft.Extensions.Configuration;

internal class Program
{
  static void Main(string[] args)
  {
    IConfigurationBuilder builder = new ConfigurationBuilder().AddJsonFile("./appsettings.json", false, true);
    IConfigurationRoot root = builder.Build();

    Console.WriteLine($"Hello, { root["weather"] } world!");
  }
}

3. 使用正确的构建脚本

引用Mono自带的基础程序集,以及NuGet下载的兼容版本dll:

#!/bin/bash
mcs monotest.cs \
-r:System.Runtime.dll \
-r:System.Collections.dll \
-r:System.ComponentModel.Annotations.dll \
-r:System.IO.FileSystem.dll \
-r:Microsoft.Extensions.Configuration/lib/netstandard2.0/Microsoft.Extensions.Configuration.dll \
-r:Microsoft.Extensions.Configuration.Abstractions/lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll \
-r:Microsoft.Extensions.Configuration.Json/lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll \
-r:Microsoft.Extensions.FileProviders.Abstractions/lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll \
-r:Microsoft.Extensions.FileProviders.Physical/lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll \
-r:Microsoft.Extensions.Primitives/lib/netstandard2.0/Microsoft.Extensions.Primitives.dll

4. 创建配置文件示例

在程序目录下创建appsettings.json:

{
  "weather": "sunny"
}

5. 运行程序

编译完成后,用Mono执行生成的可执行文件:

mono monotest.exe

额外说明

  • 若遇到其他缺失引用的错误,可通过NuGet安装对应依赖包,或检查Mono的/usr/lib/mono/netstandard2.0/目录下的基础程序集。
  • 若长期使用,建议升级Mono到6.12及以上版本(支持.NET 6+),可大幅减少版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:52:42