我正在编写一个c#类库,需要能够从web读取设置。config或app.config文件(取决于DLL是否从ASP. config引用。NET web应用程序或Windows窗体应用程序)。

我发现

ConfigurationSettings.AppSettings.Get("MySetting")

但该代码已被微软标记为弃用。

我读到我应该使用:

ConfigurationManager.AppSettings["MySetting"]

但是,在c#类库项目中,System.Configuration.ConfigurationManager类似乎不可用。

最好的方法是什么?


当前回答

请检查您正在使用的. net版本。它应该大于4。你必须添加系统。配置系统库到您的应用程序。

其他回答

您需要向System添加一个引用。在项目的引用文件夹中的配置。

你绝对应该使用ConfigurationManager,而不是过时的ConfigurationSettings。

我在这个链接https://stackoverflow.com/a/1836938/1492229找到了答案

不仅需要使用名称空间System.Configuration。您还必须将引用添加到程序集System.Configuration.dll,通过

右键单击引用/依赖项 选择添加参考 找到并添加System.Configuration。

这肯定有用。 同样,对于NameValueCollection,你必须写:

using System.Collections.Specialized;

我正在用这个,对我来说效果很好:

textBox1.Text = ConfigurationManager.AppSettings["Name"];

您可以将App.config文件添加到DLL文件中。config只适用于可执行的项目,因为所有DLL文件都从正在执行的EXE文件的配置文件中获取配置。

假设你的解决方案中有两个项目:

SomeDll SomeExe

您的问题可能与您将app.config文件包含到SomeDLL而不是SomeExe有关。SomeDll能够从SomeExe项目中读取配置。

阅读配置:

你需要在配置中添加一个引用:

打开项目上的“属性” 进入“设置”选项卡 添加“名称”和“值” 使用以下代码获取价值: 字符串值= Properties.Settings.Default.keyname;

保存到配置:

   Properties.Settings.Default.keyName = value;
   Properties.Settings.Default.Save();