从 .NET 源项目而不是目标读取配置文件

Reading configuration file from .NET Source Project, not from target

在.NET解决方案中,我们可以从配置文件中读取设置,例如web.configapp.config。但是我在使用这些资源的时候发现了一个问题。在一个解决方案中,我创建了一个 Class Library Project 和一个 ASP.NET Project,它们都有一个 "something.config" 文件。在Class库中,它被称为App.Config,而在ASP.NET中,显然,Web.config

我在 Class 图书馆项目的 class 中创建了一个方法,并在 ASP.NET 中调用了它。这些方法从 app.config 获取一些设置,但是如果我尝试在我的 Web 项目中使用从 web.config 读取的方法,在 ASP.NET 项目中,这是不可取的。

如何使 Class Library Project 中的方法从相应的项目中读取 App.Config,而不是从 Web 项目中读取?

这取决于您的应用运行。

Web 应用程序是入口点,因此它将使用 web.config。

你可以把app.config中包含的values/sections放到web.config中,它会被读取。

挖掘配置管理器后class我添加了以下内容以读取与程序集关联的配置文件。

var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);

var tempValue = config.AppSettings["setting_name"];
默认情况下不会加载 class 库项目中的

App.config。将加载的唯一配置文件是客户端配置 (web.config)。

配置项目以加载本地 class 库配置文件,即 app.config

您需要以下代码来执行此操作:

ConfigurationManager.OpenMappedExeConfiguration(
    new ExeConfigurationFileMap() { 
        ExeConfigFilename = path + "app.config" 
    }, ConfigurationUserLevel.None);

有关详细信息,请访问 this answer