只是一个简单的问题。我有一个分解在多个项目中的解决方案。在一个项目中,我有数据库交互和我的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.
有人可以向我解释一下吗?
谢谢!
答案 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;乙
配置值在程序运行时获取,而不是在编译时获取。