C#Windows服务多个配置文件

时间:2010-04-14 17:22:01

标签: c# app-config windows-services

快速提问

是否可以在Windows服务中拥有多个配置文件? 或者有什么方法可以在运行时合并它们吗?

方案

目前我有两个包含以下内容的配置文件。 在我构建并安装Windows服务之后,我无法获取自定义XML Parser类来读取内容,因为它一直指向错误的配置文件,即使我使用几行代码来确保它获得正确的名称我需要访问的配置文件。

ALSO

当我导航到安装服务的文件夹时,只有普通APP.Config文件的标志,并且没有自定义配置文件的标志。 (我甚至将普通的属性设置为“不复制”,将自定义属性设置为“始终复制”)。

配置文件确定代码

           string settingsFile = String.Format("{0}.exe.config",
                System.AppDomain.CurrentDomain.BaseDirectory
            + Assembly.GetExecutingAssembly().GetName().Name);

CUSTOM CONFIG文件

     <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
   <servers>
    <SV066930>
  <add name="Name" value = "SV066930" />
  <processes>
    <SimonTest1>
      <add name="ProcessName" value="notepad.exe" />
      <add name="CommandLine" value="C:\\WINDOWS\\system32\\notepad.exe    C:\\WINDOWS\\Profiles\\TA2TOF1\\Desktop\\SimonTest1.txt" />
              </SimonTest1>
     </processes>
    </SV066930>
   </servers>
  </configuration>

正常APP.CONFIG文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
   <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxx" />
 </configSections>
 <connectionStrings>
    <add name="DB" connectionString="Data Source=etc......" />
  </connectionStrings>
 </configuration>

2 个答案:

答案 0 :(得分:0)

here是关于在.net中使用多个配置文件的入门读物。您可以在单独的文件中定义一些设置,并在主配置文件中引用它。

在你的情况下,我认为你可以在主配置文件中这样做:

 <Servers file="CUSTOM_CONFIG_FILE.config" />

答案 1 :(得分:0)

您可以选择将整个配置部分(此处的重点放在部分,而不是配置部分组或配置设置)移动到外部文件(显然必须在运行时出现在工作目录中)和引用它通过configSource属性,例如

<Servers configSource="CUSTOM_CONFIG_FILE.config" />
然后

和CUSTOM_CONFIG_FILE.config看起来像......

<?xml version="1.0" encoding="utf-8" ?>
<Servers>
</Servers>

缺点是在你的主app.config / web.config中你需要定义每个配置部分 - 正如你所做的那样 - 所以我猜你的情况不是限制。