覆盖dll配置

本文关键字:配置 dll 覆盖 | 更新日期: 2023-09-27 18:01:33

我有一个类库,与域对象(基于linq的对象,在。net4.0)。我想让这个库使用连接字符串为自己的app.config.

存在一些问题:按照Settings: ApplicationSettingsBase使用的模型,我创建了一个应该从app.config中读取设置的包装器。

然而,与模型不同的是,我提供了默认值。问题是应该从app.config 加载数据的属性
  internal sealed class ApplicationSettings : ApplicationSettingsBase
    {
    // other properties
        [SpecialSetting( SpecialSetting.ConnectionString )]
       [global::System.Configuration.DefaultSettingValueAttribute("Server=.;Database=RFPLUSSTD;User Id=SYSADM;Password=SYSADM;")]
        public string MainConnectionString
    {
    get { return (string)this["MainConnectionString"]; }
    }

//其他属性}

in app.config:
<connectionStrings>
<add name="MainConnectionString"
connectionString="..."
providerName="System.Data.SqlClient" />
</connectionStrings>

现在,这不起作用…我尝试将conn字符串的名称设置为完全限定名称,如namespace.class。属性,但要有效。

  • 我不想使用dbml使用的默认设置类,因为它编译设置:D和我不能改变他们没有重新编译…
  • 我已经在一个项目中使用不同的应用程序设置类模型1.1,但我认为3.5已经成长足够,有自己的对象,那工作。

那么,为什么不工作,我如何使它工作?

谢谢

覆盖dll配置

您需要确保您在文件系统中具有进行更改的权限。我希望你已经考虑过了。如果您确定更改了配置文件,并且它只带来默认设置,则它可能会从输出bin文件夹中加载配置文件,而不是在项目根目录中。如果您确定修改失败,请发布错误消息。

更新:

嗨,杰克,我认为你的代码的主要问题是,它是每次创建ApplicationSettings类的新实例,如果设置是在用户范围内,你将有空值,然后它的结果为默认值每次。

您可以使用内置的Settings类轻松地完成此操作。默认情况下,设置只能在Assembly 内部密封部分类设置(在Settings. designer .cs中)中访问。如果您将其更改为公共密封,您将能够从任何程序集访问设置,接下来的事情是您必须将设置保持为应用程序范围而不是用户范围。完成这两项后,就可以检索和保存了,没有任何问题。