【问题标题】:Configuring GAC-placed assemblies. Best practice配置 GAC 放置的程序集。最佳实践
【发布时间】:2010-09-08 14:23:41
【问题描述】:

我必须实现将放入 GAC 的 .net 程序集。它依赖于 RDBMS 连接字符串和一些额外的参数——我应该把它放在什么位置? Machine.config、registry 还是更合适的?

这些信息应该放在使用组件的应用程序配置文件 (app.config/web.config) 中(正如 Marek Grzenkowicz 所注意到的那样),但是如果应用程序配置由于某些原因不可触及怎么办?

提前感谢您!

【问题讨论】:

  • 投票结束:您提出的问题的主要信息是无法使用正常(最佳)解决方案,没有任何进一步的信息或要求。
  • 是的,情况不正常。
  • 这里可能有一个严肃的问题,但你隐藏得很好。当 app.config 不是时, machine.config 如何成为一个选项?等等。

标签: .net configuration assemblies gac


【解决方案1】:

您应该将这些信息放入使用该程序集的应用程序的app.config / web.config 文件中。这样就可以为每个此类应用程序指定不同的设置。

【讨论】:

  • 是的,没错。我忘了提到由于某些原因应用配置不可编辑:(
  • @Andrew Florko:将此信息添加到原始问题中,并准确解释 app.config 不可编辑 的含义。这是要求吗?你没有适当的权限吗? app.config 文件是否属于某个第 3 方应用程序?
  • 这是一个应用程序组件,我们没有管理权限来更改配置。我应该联系管理员并要求为我们进行一些更改 - 可能最好更改他们有价值的应用程序配置,然后要求他们更改 machine.config 或运行注册表修改脚本。
【解决方案2】:

我认为这取决于您希望相关程序集在管理设置中的参与程度。

注册机构可以很好地满足一次性不再考虑的方法。使用注册表的一个缺点是缺乏对在 ADO.NET 类中检索连接字符串的内置支持。

通过要求应用程序的 app.config 或 web.config 中的设置,可能会更好地满足基于每个应用程序的这种可能不同的方法。配置文件为许多 ADO.NET 相关类提供内置连接字符串支持的额外好处。

我总是对修改 machine.config 持怀疑态度。我无法解释为什么,真的,除了设置是全局的。 machine.config 中使用的每个连接字符串名称都是传播到其他配置的名称,必须使用、忽略或删除。它还使开发环境与生产环境的同步变得复杂。也就是说,我不认为这些原因是避免使用 machine.config 的非常有说服力的原因。在做出决定之前权衡取舍。

隔离存储中的自定义文件是另一个可行的选择,尽管它通常用于有限信任环境;由于 GAC 是完全信任的,因此隔离存储可能不是一个令人信服的选项。

【讨论】:

    【解决方案3】:

    使用特定数据库的“组件”可能一开始就不应该出现在 GAC 中。

    如果你真的需要这个,Connectionstring 不是正常意义上的配置。您可能应该将其硬编码到您的程序集中。

    请提醒我不要安装你的软件。

    【讨论】:

    • 不错的评论! :) 我编写的应用程序使用 GAC 安装的组件作为外部插件,由注册表(!)中描述的 [程序集 + 类名] 完全指定。
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 2012-01-14
    • 2012-12-25
    相关资源
    最近更新 更多