3

我正在创建一个从 Sql 数据库创建 Lucene 索引的小控制台应用程序。此应用程序将使用单个参数运行。此参数将定义它将使用的连接字符串以及目标文件应放置的位置。

我想将连接字符串和目标路径存储在 app.config 文件中。是否可以以某种方式对设置进行分组?例如,如果给出参数“ABC”,我希望使用 connectionstring1 并使用 targetPathBanana。

以下示例不起作用,但我认为说明了我的意图

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <abc>
        <appSettings>               
            <add key="targetBasePath" value="\\Thor\lucene\abc"/>
        </appSettings>
        <connectionStrings>             
            <add name="commonString" 
                 connectionString="Data Source=thor;Persist Security Info=True;User ID=****;Password=****"/>
        </connectionStrings>
    </abc>    
    <123>
        <appSettings>               
            <add key="targetBasePath" value="\\Loki\temp\lucene"/>
        </appSettings>
        <connectionStrings>             
            <add name="commonString" 
                 connectionString="Data Source=helga;Persist Security Info=True;User ID=****;Password=****"/>
        </connectionStrings>
    </123>
</configuration>

我知道我可以让键的名称遵循命名约定,但我很好奇这是否可以以不那么基于约定的方式解决。

4

1 回答 1

5

如果您在 app.config 文件中使用此前缀,您应该能够创建任意数量的包含<appSettings><connectionStrings>部分的自定义部分组:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="ABC">
      <section name="appSettings" 
               type="System.Configuration.AppSettingsSection,
                     System.Configuration"/>
      <section name="connectionStrings" 
               type="System.Configuration.ConnectionStringsSection,
                     System.Configuration"/>
    </sectionGroup>
  </configSections>
  ... put your section groups here.....
  <ABC>
    <appSettings>                           
      <add key="targetBasePath" value="\\Thor\lucene\abc"/>
    </appSettings>
    <connectionStrings>                     
      <add name="commonString" connectionString="..."/>
    </connectionStrings>
  </ABC>
</configuration>
于 2009-06-11T09:31:59.287 回答