【问题标题】:App config in Class library C#类库 C# 中的应用程序配置
【发布时间】:2016-11-27 10:54:31
【问题描述】:

我有一个使用类库的 dll 的 wpf 应用程序。我无法访问类库中的 app.config 值

我如何尝试访问 app.config:

ConfigurationSettings.AppSettings["conStr"].ToString();

这是返回一个空值 using System.Configuration 也被添加。

【问题讨论】:

  • 有什么理由不通过库定义的公共类公开相关属性?

标签: c# wpf


【解决方案1】:

我有同样的问题。尝试为您的类库添加一个设置文件来存储您的值。该值将存储在 app.config 中,但使用设置文件进行访问。

这篇文章解释得更好:Can a class library have an App.config file?

这篇文章详细介绍了设置文件:Best practice to save application settings in a Windows Forms Application

如果您不想执行上述操作,您也可以将数据移动到主项目 App.config 文件中,它应该可以工作。

【讨论】:

    【解决方案2】:

    试试

    ConfigurationManager.AppSettings["conStr"].ToString();
    

    如果不起作用,请发布您的 App.Config

    ConfigurationSettings.AppSettings 已过时

    【讨论】:

      【解决方案3】:

      我建议使用您自己的类来保存类库设置。像这样的:

      public class GlobalSettings
      {
      
          public double RedFiber { get; set; }
          public double GreenFiber { get; set; }
          public double BlueFiber { get; set; }
          public bool DeleteMinorViews { get; set; }
      
      
          public static GlobalSettings Load()
          {
              try
              {
                  return JsonConvert.DeserializeObject<GlobalSettings>(File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\YOUR_APP_NAME\\"));
              }
              catch ()
              {
                  return DefaultSettings;                
              }
      
          }
      
          public void Save()
          {
              File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\YOUR_APP_NAME\\", JsonConvert.SerializeObject(this, Formatting.Indented));
          }
      
          private static readonly GlobalSettings DefaultSettings = new GlobalSettings()
          {
              RedFiber = 0,
              GreenFiber = 255,
              BlueFiber = 0,
              DeleteMinorViews = true,
          };
      }
      

      【讨论】:

        【解决方案4】:

        你为什么不把这个值放在主项目中?

        如果您从主项目调用类库。然后类库中的代码使用主项目内部定义的AppConfig。

        通常的做法是在主项目的 AppConfig 中而不是在类库中包含连接字符串。

        【讨论】:

          猜你喜欢
          • 2011-01-07
          • 1970-01-01
          • 1970-01-01
          • 2020-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-22
          • 2015-07-14
          相关资源
          最近更新 更多