6

我有一个引用另一个程序集(类库)的 Windows 服务。在另一个程序集中,我使用应用程序设置来存储一些值。当我将所有必需的文件复制到服务器时,我可以在AssemblyName.dll.config文件中看到这些设置。

但是,当我更改此配置文件中的设置并重新启动服务时,更改无效。即使我卸载/重新安装服务,它仍然会在运行时返回旧值。

配置文件:

   <setting name="RecordLimit" serializeAs="String">
     <value>300</value>
   </setting>

代码:

if (recordCount > Settings.Default.RecordLimit) //always 300

因此,即使我将配置文件中的值更改为 400 并重新启动甚至重新安装服务,该值始终为 300,这让我认为该值存储在编译代码中并从编译代码返回。

我做错了什么,对应用程序设置的更改是否总是需要重新编译和重新安装(我知道我可以使用Save()方法从代码中更改设置,但这是一个 Windows 服务,所以使用这种方法似乎没有感觉)?

如果存储在配置文件中的这些设置无效并且设置存储在编译代码中,我可以安全地删除这些配置文件吗?

如果在不重新编译的情况下无法更改这些设置,我必须存储哪些其他选项可以在不重新编译的情况下更改?

编辑:我刚刚删除了AssemblyName.dll.config文件,代码返回 300,因此配置文件显然无关紧要。

4

3 回答 3

2

据我所知,配置文件是如何工作的,它必须在 EXE 级别:appname.exe.config 用于服务/应用程序,web.config 用于网站/服务。

请参阅Can有人提供快速 App.config/Web.config 教程中的问题/答案?以供参考。

于 2012-07-05T21:29:57.690 回答
0

引用 DLL 的 exe 可以在自己的配置中操作配置设置吗?

您应该尝试将设置添加到 exe.config 作为测试。

于 2012-07-05T21:24:17.643 回答
0

我认为实际使用的 .config.dll 文件可能位于C:\Users\Username\AppData中的某个位置(在 Win7 中)。尝试在该文件夹中搜索 AssemblyName.dll,然后四处寻找应该可以找到它。

于 2012-07-05T21:28:49.657 回答