none
关于Enterprise Library 4.0中使用Configuration.Console可视化操作自定义配置文件的问题 RRS feed

  • 常规讨论

  • 我最近在研究Enterprise Library 4.0中使用Configuration.Console,因为我们团队还没有一个可视化的工具进行配置文件配置,所以我想利用Configuration.Console来实现应用系统的配置文件可视化操作。我使用的开发工具VS2008.配置文件如下(主要是配置数据库的一些参数):

    <?xml version="1.0" encoding="GB2312" ?>
    <Geooe>
     <!--系统数据库配置,系统运行时首先读取配置文件中的信息,为了提高系统运行效率,
     系统在运行时将配置信息读取到内存中,配置更改需要重新启动系统才能生效-->
     <dataProviders>
      <dataProvider name="SqlClient" connectionType="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       commandType="System.Data.SqlClient.SqlCommand, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterType="System.Data.SqlClient.SqlParameter, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterDbType="System.Data.SqlDbType, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterDbTypeProperty="SqlDbType" dataAdapterType="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       commandBuilderType="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterNamePrefix="@" />
      <dataProvider name="OleDb" connectionType="System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       commandType="System.Data.OleDb.OleDbCommand, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterType="System.Data.OleDb.OleDbParameter, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterDbType="System.Data.OleDb.OleDbType, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterDbTypeProperty="OleDbType" dataAdapterType="System.Data.OleDb.OleDbDataAdapter, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       commandBuilderType="System.Data.OleDb.OleDbCommandBuilder, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterNamePrefix="@" />
      <dataProvider name="OracleClient" connectionType="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       commandType="System.Data.OracleClient.OracleCommand, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterType="System.Data.OracleClient.OracleParameter, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterDbType="System.Data.OracleClient.OracleType, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterDbTypeProperty="OracleType" dataAdapterType="System.Data.OracleClient.OracleDataAdapter, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       commandBuilderType="System.Data.OracleClient.OracleCommandBuilder, System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       parameterNamePrefix=":" />
     </dataProviders>
      <dataSources workflowdb="grid_workflowdb" metadatadb="grid_metadatadb" sysdb="grid_sysdb" geodb="grid_sysdb" addressdb="grid_sysdb">
        <dataSource name="SysDB"   default="true" provider="OracleClient" connectionString="Data Source=griddb;Persist Security Info=True;User ID=grid_sysdb;Password=mapapp"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />

        <dataSource name="AddrDB"   provider="OracleClient" connectionString="Data Source=griddb;Persist Security Info=True;User ID=grid_SysDB;Password=mapapp"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />
       
        <dataSource name="CWGeoWareHouse"   provider="OracleClient" connectionString="Data Source=griddb;Persist Security Info=True;User ID=grid_metadatadb;Password=mapapp"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />
       
      <dataSource name="Geocoding" provider="OracleClient" connectionString="Data Source=griddb;Persist Security Info=True;User ID=grid_sysdb;Password=mapapp"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />

        <dataSource name="WorkFlow"   provider="OracleClient" connectionString="Data Source=griddb;Persist Security Info=True;User ID=grid_workflowdb;Password=mapapp"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />

        <dataSource name="GeoDB"   provider="OracleClient" connectionString="Data Source=griddb;Persist Security Info=True;User ID=grid_sysdb;Password=mapapp"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />
       
      <dataSource name="SQLWorkFlow" provider="SqlClient" connectionString="Server=appserver;Database=cw_workflow;User ID=sa;Password=sa@supermap"
       dataOperationsDir="" dataOperationsFileMask="SqlClient.DataSource2.Commands.config" parameterNamePrefix="@" />

      <dataSource name="SQLSysDB" provider="OleDb" connectionString="Server=.;Database=cw_sysdbgrid;User ID=sa;Password=sa@supermap"
       dataOperationsDir="" dataOperationsFileMask="OleDb.DataSourceOleDb.Commands.config" parameterNamePrefix="@" />

      <dataSource name="DataSourceOracle" provider="OracleClient" connectionString="Server=.;Database=ENTER_DBNAME_HERE;User ID=ENTER_USERNAME_HERE;Password=ENTER_PASSWORD_HERE"
       commandDir="" commandFileMask="OracleClient.DataSourceOracle.Commands.config" parameterNamePrefix=":" />
     </dataSources>
     <transactionHandlers>
      <transactionHandler name="HomeGrown" default="true" handlerType="Framework.DataAccess.TransactionHandling.HomeGrownTransactionHandler, Framework.DataAccess" />
      <transactionHandler name="SWC" handlerType="Framework.DataAccess.TransactionHandling.SWCTransactionHandler, Framework.DataAccess" />
     </transactionHandlers>
    </Geooe>

    由于我们这个xml文档没有configuration结点,所以我在程序运行前先吧Geooe结点替换成了configuration结点,这样Configuration.Console打开我这个配置文件才不会报“没有configuration根结点的错误”。我对照Enterprise Library中AppSettings.Configuration.Design这个工程建了一个新的工程DataSources.Configuration.Design专门用于构建自定义的配置文件结点。里面包括结点的声明(继承ConfigurationNode),UI命令的注册、序列化与反序列化这几个Class,但是现在还是一头雾水,不知道怎么去写这些代码,AppSettings.Configuration.Design中的代码很难以理解,所以还请这方面的高手指点一下,告诉我怎么去实现,实现的步骤即可。这样我就可以利用Configuration.Console来可视化操作我们自己的配置文件了,谢谢

    2009年3月26日 3:02

全部回复

  • 怎么没有热心人回复一下 \(^o^)/~
    2009年3月27日 13:31
  • 你好

    在你安装完Enterprise Library时,已经给你安装了一个可视化编辑的工具了。你到 开始》程序》Enterprise Library 中找找就可以看到了。

    Microsoft Online Community Support
    2009年3月30日 6:31
  • 楼上的,感谢你的回复。Enterprise Library自带的可视化工具,只能打开Web.Config文件,其他自定义的配置的文件是需要自己写程序注册到这个可视化工具中的。
    2009年3月30日 10:31
  • 我也遇到了同样的问题,关注一下
    2009年4月1日 3:31