从 .NET 源项目而不是目标读取配置文件
Reading configuration file from .NET Source Project, not from target
在.NET解决方案中,我们可以从配置文件中读取设置,例如web.config
或app.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。
在.NET解决方案中,我们可以从配置文件中读取设置,例如web.config
或app.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"];
App.config
。将加载的唯一配置文件是客户端配置 (web.config
)。
配置项目以加载本地 class 库配置文件,即 app.config
。
您需要以下代码来执行此操作:
ConfigurationManager.OpenMappedExeConfiguration(
new ExeConfigurationFileMap() {
ExeConfigFilename = path + "app.config"
}, ConfigurationUserLevel.None);
有关详细信息,请访问 this answer。