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

VS2017中.NET Core xUnit测试项目无法找到COM选项卡添加System.Configuration.dll

解决.NET Core xUnit项目中添加System.Configuration相关依赖的问题

嘿,我来帮你理清这个问题!首先得明确:.NET Core(包括你用的xUnit测试项目)并不支持通过COM选项卡添加System.Configuration.dll——因为.NET Core采用了全新的依赖管理模型,传统的COM引用方式只适用于.NET Framework项目,这就是你看不到COM选项卡的原因。

下面分两种情况给你解决方案:

一、推荐:使用.NET Core原生的配置系统(适配appsettings.json)

如果你只是想读取appsettings.json里的配置值,完全不需要依赖旧的System.Configuration.dll,.NET Core提供了更轻量、更灵活的配置系统,步骤如下:

  1. 安装必要的NuGet包
    右键你的xUnit项目 → 选择「管理NuGet程序包」,在浏览标签页搜索并安装以下包:

    • Microsoft.Extensions.Configuration.Json:支持读取JSON配置文件
    • Microsoft.Extensions.Configuration.Binder:方便将配置绑定到实体类(可选,但推荐)
  2. 配置appsettings.json的复制属性
    右键appsettings.json文件 → 选择「属性」,把「复制到输出目录」设置为「如果较新则复制」或者「始终复制」,确保测试运行时能找到配置文件。

  3. 在测试类中读取配置
    举个简单的示例:

    using System.IO;
    using Microsoft.Extensions.Configuration;
    using Xunit;
    
    public class ConfigurationTests
    {
        private readonly IConfiguration _config;
    
        public ConfigurationTests()
        {
            // 初始化配置构建器
            var configBuilder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
    
            _config = configBuilder.Build();
        }
    
        [Fact]
        public void ReadAppSettingsTest()
        {
            // 直接通过键路径读取值
            var apiUrl = _config["ApiSettings:BaseUrl"];
            var timeout = _config.GetValue<int>("ApiSettings:Timeout");
    
            // 验证读取结果
            Assert.NotNull(apiUrl);
            Assert.True(timeout > 0);
        }
    }
    

    对应的appsettings.json内容可以是:

    {
      "ApiSettings": {
        "BaseUrl": "https://api.example.com",
        "Timeout": 30
      }
    }
    

二、如果确实需要旧的System.Configuration.dll(兼容旧代码)

如果你是因为要兼容基于.NET Framework的旧代码,必须使用System.Configuration相关的API,那也不需要找COM引用,直接通过NuGet安装对应的包即可:

  1. 打开NuGet包管理器,搜索并安装System.Configuration.ConfigurationManager包。
  2. 安装完成后,你就可以在代码中引用System.Configuration命名空间,使用ConfigurationManager等类了。

补充说明

为什么你看不到COM选项卡?因为.NET Core项目采用的是SDK-style项目格式,所有依赖(包括系统类库)都通过NuGet管理,不再支持.NET Framework那种通过COM/程序集引用添加系统dll的方式,这样能保证项目的跨平台兼容性和依赖的可追溯性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:43:02