【问题标题】:Include ConnectionStrings from class library's config file [duplicate]从类库的配置文件中包含 ConnectionStrings [重复]
【发布时间】:2014-09-08 22:30:03
【问题描述】:

这个问题在这里被问了很多次,但我似乎无法将任何答案应用于我的案例。所以我们又来了。

我有两个项目,ProjectAProjectBProjectA 是一个类库并使用实体框架,它(默认情况下)将其模型设置写入App.config 文件。另一方面,ProjectB 是一个可执行文件,具有自己的Web.config 文件并引用ProjectA 以满足其数据访问需求。当然,问题是在运行时,ProjectB's web.config 被读取,因为它是“执行程序集”,这意味着我需要将来自ProjectA's app.config 的所有连接字符串包含在ProjectB的web.config。

我真的不喜欢手动复制这些连接字符串的想法。我想知道是否有办法告诉ProjectB 的web.config 将其connectionStrings 部分替换为app.config 中的ProjectA 部分。所以理论上,我会从这样的开始:

ProjectA (App.config):

<configuration>
  <connectionStrings>
    <add name="MyModelContext" connectionString="blahblah" />
  </connectionStrings>
</configuration>

ProjectB (Web.config):

<configuration>
 <connectionStrings>
 </connectionStrings>
<configuration>

构建项目后/运行时:

ProjectB (Web.config):

<configuration>
  <connectionStrings>
     <add name="MyModelContext" connectionString="blahblah" />
  </connectionStrings>
<configuration>

是否支持此功能?

【问题讨论】:

  • Is this feature supported? 没有简单的开箱即用解决方案。
  • 我完全同意。这非常烦人。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# .net configuration web-config app-config


【解决方案1】:

您可以使用configSource attribute 将几乎任何app.config/web.config 部分替换为外部文件。

在您的web.config 中,其中connectionStrings.config 是ProjectA 中的app.config connectionStrings 部分:

<connectionStrings configSource="connectionStrings.config" />

configSource 是相对于 web.config 文件的路径,因此您可以将其指向应用程序中的任何文件,例如config\connectionStrings.config.

【讨论】:

  • 嗯,我遇到了一个异常,出现以下错误:Unable to open configSource file 'ProjectA.dll.config'.(C:\SomeFolder\MyProject\web.config line 8)...
  • ProjectA.dll.config 是否在您的项目的根目录中?
  • 它在bin。但即便如此,ProjectA.dll.config 在输出目录中的任何地方都不存在。我必须做一些特定的事情才能生成吗?
  • 您需要创建 connectionStrings.config 文件,并将其放在您的 Web 应用程序项目中,确保 configSource 设置为应用程序相对路径。
猜你喜欢
  • 2018-04-12
  • 1970-01-01
  • 2012-11-10
  • 2015-10-05
  • 1970-01-01
  • 2013-01-07
  • 2012-01-31
  • 2011-08-28
  • 2017-02-07
相关资源
最近更新 更多