【问题标题】:Using config file in .NET Standard does not work在 .NET Standard 中使用配置文件不起作用
【发布时间】:2018-09-07 13:47:21
【问题描述】:

如何在 .NET Standard 项目中使用控制台配置文件 (App.config)。

我在 App.config 中有一个控制台应用程序:

<appSettings>
    <add key="Test" value="test" />
</appSettings>

在我的 .NET Standard 项目中,我添加了 NuGet 包:

Install-Package System.Configuration.ConfigurationManager -Version 4.5.0 

并有一个类返回该键的值:

public string Test()
        {  
            return ConfigurationManager.AppSettings["Test"];
        }

这只是为了测试我是否可以在 .NET Standard 项目中使用 App.config 设置。

但我收到此错误消息:

System.IO.FileNotFoundException: '无法加载文件或程序集 'System.Configuration.ConfigurationManager, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' 或其依赖项之一。系统找不到指定的文件。'

当我在 Program.cs 中执行此操作时:

Class class = new Class();
string result = class.Test();

【问题讨论】:

  • 我有一个控制台应用程序,它完全可以满足您的需求。会不会是版本问题?
  • 可能是软件包版本有问题?您安装了 4.5.0 版本,它正在寻找 4.0.1.0。
  • @Duston 真的很xD...
  • @DanielA.White 达斯顿在他的评论中说它对他有用吗?
  • @user7849697 但他没有说明他正在使用与您相同的版本

标签: c# .net-standard configuration-files


【解决方案1】:

我能够重现您提到的行为,并修复它,我在使用测试类的控制台项目上引用了 System.Configuration.ConfigurationManager -Version 4.5.0

错误基本上是告诉您它在输出路径中找不到该程序集,您在 .net 标准项目中引用了它,但也需要在启动项目的控制台应用程序中引用它。

话虽如此,还要确保您的配置文件 &lt;appSettings&gt; 部分位于 &lt;configuration&gt; 部分下,例如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <appSettings>
        <add key="Test" value="test" />
    </appSettings>
</configuration>

希望这会有所帮助!

【讨论】:

  • 这确实有效。所以你必须将这个引用 Install-Package System.Configuration.ConfigurationManager -Version 4.5.0 都添加到 .NET Standard 和 Console/UWP/WPF/... 项目中?
  • 是的,控制台项目需要对配置类型的引用才能处理文件。然后需要读取这些设置的其他项目可以引用 ConfigurationManager 对象,然后 ConfigurationManager 类知道如何获取相同的存储信息。
猜你喜欢
  • 2018-04-27
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多