web.config,app.config优先级/依赖项和编译时的用法

时间:2015-03-13 15:07:18

标签: c# .net entity-framework

只是一个简单的问题。我有一个分解在多个项目中的解决方案。在一个项目中,我有数据库交互和我的EDMX。在这个项目中,我的app.config文件包含一些连接字符串。

此项目在Web项目中作为依赖项导入。在这个,我有我的Web.config定义(或“覆盖”)连接字符串。

我想知道用于配置数据库连接的机制是什么。根据我的理解,Web.config优先于App.config。但我想知道的是,在编译时使用的依赖项目中的App.config是什么?

例如:

项目A => app.config:

<connectionStrings>
    <add name="A" connectionString="myConnectionStringA"/>
    <add name="B" connectionString="myConnectionStringB"/>
</connectionStrings>

在Web.config中也一样,但是:

<connectionStrings>
    <add name="A" connectionString="myConnectionStringC"/>
    <add name="B" connectionString="myConnectionStringD"/>
</connectionStrings>

哪一个将用于定义与EDMX的连接?一方面,在编译时,逻辑上它将是A&amp; B用来定义它,C&amp; D将在运行时使用。

但是我不确定它并且对我来说,一旦dll被“配置”,我不知道如何使用C和D代替A&amp; B.

有人可以向我解释一下吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

在运行时使用的配置文件与启动应用程序的位置相关。如果启动projectA,它将是App.config文件。

实际上它将是正确目录“Debug”或“Release”上的编译生成的文件

当您运行Web项目时,它将是那里的Web.config文件。

dll未使用配置文件中的值“配置”,它们在应用程序开始运行时被读取,这取决于正在运行的应用程序。 这就是为什么如果更改值,当您重新启动应用程序时它们将更改,而无需重新编译项目。

答案 1 :(得分:0)

在Visual Studio中设计实体时,将使用存储在项目的app.config文件中的连接字符串。

即使您从Web项目添加对项目的引用,也不会在Web项目的上下文中使用所引用项目的app.config。当然,在将连接字符串添加到web.config时,它可以用作蓝图。

与Web项目相关的配置文件是web.config。因此,在运行或发布Web项目时,使用的设置是web.config中的设置。 它们不会覆盖app.config的设置,例如&#34;如果未在web.config文件中配置连接字符串,那么我将使用存储在app.config&#34;中的连接字符串。 您需要在运行Web项目时将要使用的连接字符串添加到web.config文件中,否则如果使用了Entity类,则会遇到错误。

有关配置ASP.NET Web应用程序的详细信息,请参阅此link

答案 2 :(得分:0)

  

但我不确定它,对我来说,一旦dll被“配置”,我   不知道如何使用C和D代替A&amp;乙

配置值在程序运行时获取,而不是在编译时获取。