从类库项目中的App.config中读取

我正在开发一个简单的类库项目,它会给我一个dll。

我想从配置文件中读取特定值。 所以我在我的项目中添加了一个App.config文件。

      

上面是我的App.config文件,现在我正在尝试将其读取如下

  string strVal = System.Configuration.ConfigurationManager.AppSettings["serviceUrl"]; 

但是我的字符串变量中没有任何值。

在此处输入图像描述

我以类似的方式为Web应用程序完成了这项工作。 但不知怎的,我无法让这个工作。

是否首先在类库项目中使用App.config是正确的?

如我的评论中所述,将App.Config文件添加到主解决方案而不是类库项目中。

您不需要添加app.config文件。 如果为基于Web的应用程序创建类库,则可以直接从web.config文件获取连接字符串

要么

您可以添加任何带有连接字符串的文本文件并获取该字符串。 用这个

 public static ConnectionStringSettings ConnSettings { get { string connectionStringKey = null; connectionStringKey = ConfigurationManager.AppSettings.Get("DefaultConnectionString"); return ConfigurationManager.ConnectionStrings[connectionStringKey]; } } 

假设问题是要求特定于dll项目的配置文件,而不是app或web app项目的配置文件,我使用以下代码从“sqlSection”部分中的键获取值。 (需要注意的是,这个配置文件 – 即使设置为始终复制 – 也不会自动复制到Web应用程序的部分版本上。所以我使用了令人敬畏的单行预构建操作来复制文件,如在这篇文章中提到https://stackoverflow.com/a/40158880/1935056 )。

这是整个dll配置文件

     

这是c#代码。

  string GetSqlStatement(string key) { string path = Path.GetDirectoryName(Assembly.GetCallingAssembly().CodeBase) + @"\DataLayer.dll.config"; XDocument doc = XDocument.Load(path); var query = doc.Descendants("sqlSection").Nodes().Cast().Where(x => x.Attribute("key").Value.ToString() == key).FirstOrDefault(); if (query != null) { return query.Attribute("value").Value.ToString(); } 

我的代码来读取配置文件

 Int32 FilesCountLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FilesTotalCount"]); long FilesLengthLimit = Convert.ToInt64(ConfigurationManager.AppSettings["FilesTotalSize"]); 

我的app.config文件的示例

        

如果您的解决方案列出了多个项目,请确保应用程序设置位于启动项目中,否则您将获得null作为答案。