在Windows Service .NET中有哪些不同的配置文件?

3
当我创建一个.NET Windows服务时,会有一个App.config文件。当我编译服务时,它会在bin目录下创建一个ServiceName.exe.config,并且还有一个ServiceName.vshosts.exe.config。
Q1) 多个配置文件的意义是什么?
当我在App.config中更改设置时,直到我卸载该服务、重新编译并重新安装该服务后,更改才会生效。我尝试在App.config和ServiceName.exe.config中都进行设置更改,但没有成功。
Q2) 我的理解是,配置文件使得更改设置变得更容易,而不必重新部署服务。
感谢任何回复。
4个回答

2

App.config用作创建<service>.exe.config<service>.vshost.exe.config的模板,如果不存在,则会创建。如果存在,则在重新编译时Visual Studio不会覆盖它。您可以通过更改VS中的app.config属性来告诉vstudio覆盖它。

除非另有说明,否则调试期间使用<service>.vshost.exe.config

当您未运行调试器时,将使用<service>.exe.config

更改应用的位置取决于您希望更改反映在哪个环境中。


2

App.config 是用于设计时的。真正的 .config 文件将由编译器放置在 bin\Release\bin\Debug 中,具体取决于你使用的构建模式。

当你使用 sc.exeInstallUtil.exe 安装服务时,这些工具希望你将所有服务文件都放在安装目录中(即传递给这些工具的主可执行文件所在的目录)。

对 App.config 的任何更改都不会反映在 <servicename>.exe.config 中,直到你构建 Windows 服务项目。如果你需要为你的服务创建安装程序,则设置项目应该自动处理这些事情,但往往会搞砸这些和其他事情。因此,如果你需要一个安装程序,请使用 http://installer.codeeffects.com 或类似服务。我不知道有任何免费的安装程序构建服务,但这个是新的且相对便宜的。


所以我的问题是,如果我不想重新部署服务,我应该在哪个配置文件中更改设置? - Nick
1
在您的服务安装文件夹中的<servicename>.exe.config文件中 - Jane
1
更正:如果您需要更改已安装和运行的服务的.config文件中的任何内容,则必须首先停止该服务(例如,在服务快照中),对安装目录中的<servicename>.exe.config文件进行更改,然后再次启动该服务。 - Jane

0

一个是用于在Visual Studio内进行调试,另一个是用于实际服务。

配置文件必须部署到Windows系统目录,并重新启动服务以应用更改。


部署到了 Windows 系统目录,我想你是指 C:\WINDOWS\system32 目录。这里也有配置文件的副本吗? - Nick

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接