【发布时间】:2015-03-20 10:40:20
【问题描述】:
我正在使用Jeff Atwood’s Unhandled Exception handler 的变体,当应用程序中存在未处理的异常时它会介入。然后它会记录错误、生成屏幕截图并通知用户。
在解决方案中编译时,项目会生成一个 EXE,在需要时调用。在更新程序时,我使用 Visual Studio 13 来编辑项目属性中的现有设置项。在代码中,我使用来自ConfigurationManager 的命令。
string appProduct = unhandledExceptions.Properties.Settings.Default.AppProduct;
我很高兴看到它有效并反映了我在 IDE 中所做的更改。但是我在解决方案生成的 confg 文件 (MyApplication.exe.config) 中找不到设置。我认为它正在返回到 UnhandledExceptions.exe.config 的另一个项目文件夹。
我创建了一个安装程序并将其安装到虚拟机上。我的设置被保留了,但我还是看不到 config 文件。
事实证明这些值嵌入在可执行文件UnhandledException.exe中。
该项目没有列出任何资源。搜索网络和 StackOverflow 寻找想要这样做的问题,并且有很多问题,似乎这通常被认为是不可能的,也是不可取的。问题通常以“你不想这样做,它被称为配置是有原因的”结尾。
我可能想关闭它,所以它可以在外部进行编辑。两个项目中 app.config 的属性是相同的。
究竟是什么设置使这成为可能?它是 Visual Studio 2013 的新功能吗?
【问题讨论】:
-
类库项目不能有功能性的 .config 文件。只使用过 EXE 项目的 .config 文件。您的代码仍然有效,因为它只是使用项目的 Settings.Designer.cs 文件中记录的默认值。没关系,用户没有充分的理由更改产品名称:) 你应该做的是自己将类库的配置条目合并到 EXE 项目的配置文件中。它不是自动的,也不是很实用。
-
@HansPassant 我可以在代码中更改用户值。对保存的这些值的更改,就像主应用程序一样,写入用户文件夹的 AppData 应用程序部分中的“user.config”的本地副本。它确实在该文件中创建了一个单独的部分,使其与主应用程序的更新值分开。
标签: winforms app-config configurationmanager