【问题标题】:Why wont my application read my DataAccessLayer.dll.config file?为什么我的应用程序无法读取我的 DataAccessLayer.dll.config 文件?
【发布时间】:2015-06-09 07:11:44
【问题描述】:

我正在尝试将应用程序设置与我正在处理的 C#.NET 项目一起使用。但我似乎无法让它返回默认值以外的任何内容。通过项目属性,我添加了一个设置 DBConnectionString,并将其值设置为我想要使用的连接字符串。其范围设置为“应用程序”。

这样做会创建许多文件,包括 Settings.settings、Settings.Designer.CS 和 app.config。 Settings 类具有自定义、类型安全的属性,可用于设置和检索每个设置。 app.config 文件是一个存储实际设置值的 XML 文件。

当我构建我的项目时,看起来 app.config 文件作为 DataAccessLayer.dll.config 复制到了目标目录。我的程序运行良好并且能够使用默认的连接字符串。

接下来我尝试编辑 DataAccessLayer.dll.config 文件以更改连接字符串。我再次运行我的程序,但它继续使用默认值。

这个项目是一个用于 Web 项目的类库,有时连接字符串会发生变化。

【问题讨论】:

  • 您的配置文件是否部署到\bin 文件夹?还有你用的是什么版本的VS?
  • 我使用的是Visual Studio 2012,文件在\bin 文件夹deploy 中,我尝试更改此文件,但DataAccessLayer.dll 在编译时继续使用默认值。
  • Settings.settings 的类型为“ConnectionString”,范围为“Application”

标签: c# .net dll


【解决方案1】:

构建将输出以 dll 命名的配置文件,但这些文件实际上并不是应用程序启动时读取的内容。您可以将设置放入网络应用程序配置中(例如Equivalent to 'app.config' for a library (DLL)),这些是您在这种情况下实际运行的设置。

如果你希望你的库是可移植的,你必须要么; 1)制作您自己的配置类/文件 2)手动读取您的 dll 的应用程序配置(例如在我上面链接的答案中)或 3)将您的设置放在导入项目 app.config 中

在这种情况下,我只会将您的连接字符串数据放入网络应用程序配置中。如果 DataAccessLayer.dll 仅供内部使用,根据我的经验,这是最常见的模式,并没有太多的缺点。最终,我会在构建过程中或通过 Salt 或 Chef 等部署实用程序设置这些值。如果您在部署时或部署后手动编辑 Web 应用配置,那么您做错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2017-02-17
    • 2020-07-31
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多