我有一个引用另一个程序集(类库)的Windows服务。在这个其他程序集中,我使用Application Settings来存储一些值。当我将所有必需的文件复制到服务器时,我可以在 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,所以配置文件显然无关紧要。
答案 0 :(得分:1)
据我所知,配置文件如何工作,它必须处于EXE级别:服务/应用程序的appname.exe.config和网站/服务的web.config。
请参阅Can someone provide a quick App.config/Web.config tutorial?的问题/答案以供参考。
答案 1 :(得分:0)
引用DLL的exe可以在自己的配置中操作配置设置吗?
您应该尝试将设置添加到exe.config作为测试。
答案 2 :(得分:0)
我认为实际使用的.config.dll文件可能位于 C:\ Users \ Username \ AppData (在Win7中)的某个位置。尝试在该文件夹中搜索AssemblyName.dll,并且应该找到它。