【问题标题】:Why are settings embedded into assemblies?为什么设置嵌入到程序集中?
【发布时间】:2013-06-29 00:29:16
【问题描述】:

当项目设置(VS 中的项目>属性>设置选项卡)用于存储用户或应用程序设置时,它们存储在assembly.dll.config 或assembly.exe.config 文件中,并且每次构建程序集时也会嵌入到程序集中。

部署后,用户设置存储在 user.config 文件中(至少对于单击一次部署是如此,我不确定 msi 部署或标准设置应用程序如何处理)以及每当用户更改设置这是在运行时存储和检索新值的位置。

现在,这一切都说得通了,但我只是尝试删除已部署应用程序的 app.exe.config 文件,然后该应用程序将在启动时崩溃,并且在恢复 app.exe.config 文件之前无法运行。

如果是这种情况,并且当配置文件丢失或修改时,应用程序无法使用嵌入的设置,那么首先嵌入设置的意义何在?这些嵌入设置是否会出现在任何情况下?有用吗?

【问题讨论】:

  • 这篇文章(以及它提供的链接)可以帮助你理解stackoverflow.com/questions/17272956/…
  • 设置值没有嵌入到程序集中,只有它们的类型安全属性。显然,我们看不出为什么设置的默认值会导致您的代码崩溃。
  • 对不起,汉斯,但你错了,我使用反射工具查看程序集并且值在那里......我明天会仔细检查......
  • 只是为了确认默认设置值确实已编译到程序集中,它看起来像这样 [DefaultSettingValue("1")] in reflector...

标签: .net


【解决方案1】:

如果您在单独的程序集中创建用户控件,并在该程序集中有设置,但您没有将这些设置复制到主可执行文件的设置中,那么您的应用程序在运行时将无法在其配置文件中找到这些设置.但是,您的用户控件将使用嵌入在程序集中的编译设置,并且不会崩溃;这是嵌入值有帮助的一种情况。

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 2010-12-03
    • 2012-05-14
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    相关资源
    最近更新 更多