【问题标题】:Why wont my application read my MyApplication.dll.config file?为什么我的应用程序无法读取 MyApplication.dll.config 文件?
【发布时间】:2010-10-01 03:35:39
【问题描述】:

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

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

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

接下来我尝试编辑 MyApplicaiton.dll.config 文件以更改连接字符串。我再次运行我的程序,但它继续使用默认值。我注意到在我的 Settings.Designer 文件中有一个带有原始默认字符串的DefaultSettingValueAttribute。我尝试删除此属性,但是当我尝试检索连接字符串设置时,它只返回 null。

这是我用来读取连接字符串的代码。

string conn = Properties.Settings.Default.DbConnectionString

我做错了什么?如何让它返回设置文件中的值而不是默认值?


更新:

对不起,我应该提到这一点。我实际上是通过公共 API 为另一个应用程序编写插件。所以我的项目是 DLL 而不是 EXE。

【问题讨论】:

  • 你在哪里使用这条线?在 DLL 或应用程序中?

标签: c# .net application-settings


【解决方案1】:

您无法从*.dll.config 文件中读取设置。如果您的库需要任何特殊设置,您需要将它们放入您的 app.configweb.config 文件中。

编辑:您可以在主应用程序或 Web 配置文件中包含外部配置文件。详情请看here

This 问题讨论了如何管理大型项目的配置文件。

【讨论】:

  • 如果您无法从 *.dll.config 中读取设置,那么它们的意义何在?
  • @Eric 即使在那时也是如此。你试过log4net吗?您必须将 log4net 配置设置放在您的应用程序或 Web 配置文件中。
【解决方案2】:

Settings 文件和 .config 文件是不同的东西(我不知道为什么 VS 在创建 Settings 文件时会自动添加一个 .config)。但是,设置文件被编译成一个类并像你说的那样被引用。如果您使用 .NET 反射器反编译 dll,Settings 类将在其中。它用于保存常量值或外部资源。例如:错误消息字符串、图标或图像。

配置文件用于可以频繁更改或在环境(开发、测试、产品)之间更改的设置。对于连接字符串,您应该使用配置文件的 部分。并且可以使用 System.Configuration.ConfigurationManager[ "connectionStringName" ] 引用该属性。

但是,从您的原始帖子看来,您的 .dll 将用于更大的项目(网络项目的 .exe 文件)。需要注意的一点是,所有项目只使用一个 .config 文件。那是主项目的配置文件。网站 web.config 文件和 exe 使用 XXX.XXX.XXX.exe.config(如您所见,*.exe.config 文件是 app.config 文件的重命名副本)。 dll 没有可用的配置文件。所有 dll 都会查看主项目的 .config 文件以检索信息。

如果您的连接字符串永远不会更改,那么请务必使用设置文件。否则,请使用配置文件并让主项目的开发人员确定使用什么填充连接字符串。

【讨论】:

  • -1。他们没有什么不同。设置文件只是 app.config/web.config 文件中userSettings 下特殊配置部分的包装类。您在设置编辑器中看到的所有设置实际上都保存在相应的配置文件中。
猜你喜欢
  • 1970-01-01
  • 2010-11-27
  • 2017-02-17
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
相关资源
最近更新 更多