加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Using System.Configuration.ConfigurationManager Example (VB.

发布时间:2020-12-16 22:17:12 所属栏目:大数据 来源:网络整理
导读:Using System.Configuration.ConfigurationManager Example (VB.NET) Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Configuration Imports System.Collections Imports System.Collections.S
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Configuration
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Diagnostics

' The following example shows how to use the ConfigurationManager 
' class in a console application.
'
' IMPORTANT: To compile this example,you must add to the project 
' a reference to the System.Configuration assembly.
'
Namespace Samples.Aspnet
#Region "Auxiliary Classes"

    ' Define a custom configuration element to be 
    ' contained by the ConsoleSection. This element 
    ' stores background and foreground colors that
    ' the application applies to the console window.
    Public Class ConsoleConfigElement
        Inherits ConfigurationElement
        ' Create the element.
        Public Sub New()
        End Sub

        ' Create the element.
        Public Sub New(ByVal fColor As ConsoleColor,_
                       ByVal bColor As ConsoleColor)
            ForegroundColor = fColor
            BackgroundColor = bColor
        End Sub

        ' Get or set the console background color.
        <ConfigurationProperty("background",_
            DefaultValue:=ConsoleColor.Black,IsRequired:=False)> _
        Public Property BackgroundColor() As ConsoleColor
            Get
                Return DirectCast(Me("background"),ConsoleColor)
            End Get
            Set(ByVal value As ConsoleColor)
                Me("background") = value
            End Set
        End Property

        ' Get or set the console foreground color.
        <ConfigurationProperty("foreground",_
            DefaultValue:=ConsoleColor.White,IsRequired:=False)> _
        Public Property ForegroundColor() As ConsoleColor
            Get
                Return DirectCast(Me("foreground"),_
                  ConsoleColor)
            End Get
            Set(ByVal value As ConsoleColor)
                Me("foreground") = value
            End Set
        End Property
    End Class

    ' Define a custom section that is used by the application
    ' to create custom configuration sections at the specified 
    ' level in the configuration hierarchy.
    ' This enables the the user that has the proper access 
    ' rights,to make changes to the configuration files.
    Public Class ConsoleSection
        Inherits ConfigurationSection
        ' Create a configuration section.
        Public Sub New()
        End Sub

        ' Set or get the ConsoleElement. 
        <ConfigurationProperty("consoleElement")> _
        Public Property ConsoleElement() _
            As ConsoleConfigElement
            Get
                Return (DirectCast(Me("consoleElement"),_
                        ConsoleConfigElement))
            End Get
            Set(ByVal value As ConsoleConfigElement)
                Me("consoleElement") = value
            End Set
        End Property
    End Class
#End Region

#Region "ConfigurationManager Interaction Class"

    ' The following code uses the ConfigurationManager class to 
    ' perform the following tasks:
    ' 1) Get the application roaming configuration file.
    ' 2) Get the application configuration file.
    ' 3) Access a specified configuration file through mapping.
    ' 4) Access the machine configuration file through mapping. 
    ' 5) Read a specified configuration section.
    ' 6) Read the connectionStrings section.
    ' 7) Read or write the appSettings section.
    Public Class UsingConfigurationManager
        ' Get the roaming configuration file associated 
        ' with the application.
        ' Note.This function uses the OpenExeConfiguration(
        ' ConfigurationUserLevel userLevel) method to 
        ' get the configuration file.
        Public Shared Sub GetRoamingConfiguration()
            ' Define the custom section to add to the
            ' configuration file.
            Dim sectionName As String = "consoleSection"
            Dim cSection As ConsoleSection = Nothing

            ' Get the roaming configuration 
            ' that applies to the current user.
            Dim roamingConfig As Configuration = _
            ConfigurationManager.OpenExeConfiguration( _
            ConfigurationUserLevel.PerUserRoaming)

            ' Map the roaming configuration file. This
            ' enables the application to access 
            ' the configuration file using the
            ' System.Configuration.Configuration class
            Dim configFileMap As New ExeConfigurationFileMap()
            configFileMap.ExeConfigFilename = roamingConfig.FilePath

            ' Get the mapped configuration file.
            Dim config As Configuration = _
                ConfigurationManager.OpenMappedExeConfiguration( _
                configFileMap,ConfigurationUserLevel.None)

            Try
                cSection = DirectCast(config.GetSection(sectionName),_
                ConsoleSection)

                If cSection Is Nothing Then
                    ' Create a custom configuration section.
                    cSection = New ConsoleSection()

                    ' Define where in the configuration file 
                    ' hierarchy the associated 
                    ' configuration section can be declared.
                    cSection.SectionInformation.AllowExeDefinition = _
                    ConfigurationAllowExeDefinition.MachineToLocalUser

                    ' Allow the configuration section to be 
                    ' overridden by other configuration files.
                    cSection.SectionInformation.AllowOverride = True

                    ' Force the section to be saved.
                    cSection.SectionInformation.ForceSave = True

                    ' Store console settings for roaming users.
                    cSection.ConsoleElement.BackgroundColor = _
                    ConsoleColor.Blue
                    cSection.ConsoleElement.ForegroundColor = _
                    ConsoleColor.Yellow

                    ' Add configuration information to 
                    ' the configuration file.
                    config.Sections.Add(sectionName,cSection)
                    config.Save(ConfigurationSaveMode.Modified)
                    ' Force a reload of the changed section. This 
                    ' makes the new values available for reading.
                    ConfigurationManager.RefreshSection(sectionName)
                End If
            Catch e As ConfigurationErrorsException
                Console.WriteLine("[Exception error: {0}]",_
                                  e.ToString())
            End Try

            ' Set console properties using values
            ' stored in the configuration file.
            Console.BackgroundColor = _
            cSection.ConsoleElement.BackgroundColor
            Console.ForegroundColor = _
            cSection.ConsoleElement.ForegroundColor
            ' Apply the changes.
            Console.Clear()

            ' Display feedback.
            Console.WriteLine()
            Console.WriteLine("Performed the following tasks:")
            Console.WriteLine("Created roaming configuration file {0}",config.FilePath)
            Console.WriteLine("Created custom ConsoleSection.")
            Console.WriteLine( _
            "Stored background (blue) and foreground (yellow) colors.")
            Console.WriteLine( _
            "Added the section to the configuration file.")
            Console.WriteLine( _
            "Read stored colors from the configuration file.")
            Console.WriteLine( _
            "Applied the colors to the console window.")
            Console.WriteLine()

        End Sub

        ' Get the application configuration file.
        ' Note. This function uses the 
        ' OpenExeConfiguration(string)method 
        ' to get the application configuration file. 
        Public Shared Sub GetAppConfiguration()
            ' Get the application path needed to obtain
            ' the application configuration file.
            Dim applicationName As String = _
            Environment.GetCommandLineArgs()(0) + ".exe"

            Dim exePath As String = _
            System.IO.Path.Combine(Environment.CurrentDirectory,_
                                   applicationName)

            ' Get the configuration file. The file name has
            ' this format appname.exe.config.
            Dim config As System.Configuration.Configuration = _
            ConfigurationManager.OpenExeConfiguration(exePath)

            Try
                ' Create a custom configuration section
                ' having the same name used in the 
                ' roaming configuration file.
                ' This is possible because the configuration 
                ' section can be overridden by other 
                ' configuration files. 
                Dim sectionName As String = "consoleSection"
                Dim customSection As New ConsoleSection()

                If config.Sections(sectionName) Is Nothing Then
                    ' Store console settings.
                    customSection.ConsoleElement.BackgroundColor = _
                    ConsoleColor.Black
                    customSection.ConsoleElement.ForegroundColor = _
                    ConsoleColor.White

                    ' Add configuration information to the
                    ' configuration file.
                    config.Sections.Add(sectionName,customSection)
                    config.Save(ConfigurationSaveMode.Modified)
                    ' Force a reload of the changed section.
                    ' This makes the new values available for reading.
                    ConfigurationManager.RefreshSection(sectionName)
                End If
                ' Set console properties using values
                ' stored in the configuration file.
                customSection = DirectCast(config.GetSection(sectionName),_
                ConsoleSection)
                Console.BackgroundColor = _
                customSection.ConsoleElement.BackgroundColor
                Console.ForegroundColor = _
                customSection.ConsoleElement.ForegroundColor
                ' Apply the changes.
                Console.Clear()
            Catch e As ConfigurationErrorsException
                Console.WriteLine("[Error exception: {0}]",e.ToString())
            End Try

            ' Display feedback.
            Console.WriteLine()
            Console.WriteLine("Performed the following tasks:")
            Console.WriteLine( _
            "Created the application configuration file {0}",_
            config.FilePath)
            Console.WriteLine("Created custom ConsoleSection.")
            Console.WriteLine( _
            "Stored background (black) and foreground (white) colors.")
            Console.WriteLine( _
            "Added the section to the configuration file.")
            Console.WriteLine( _
            "Read stored colors from the configuration file.")
            Console.WriteLine( _
            "Applied the colors to the console window.")
            Console.WriteLine()
        End Sub

        ' Get the AppSettings section.        
        ' This function uses the AppSettings property
        ' to read the appSettings configuration 
        ' section.
        Public Shared Sub ReadAppSettings()
            Try
                ' Get the AppSettings section.
                Dim appSettings As NameValueCollection = _
                ConfigurationManager.AppSettings

                ' Get the AppSettings section elements.
                Console.WriteLine()
                Console.WriteLine("Performed the following tasks:")
                Console.WriteLine("Read application settings:")
                Console.WriteLine()

                If appSettings.Count = 0 Then
                    Console.WriteLine( _
                    "[ReadAppSettings: {0}]",_
                    "AppSettings is empty Use GetSection command first.")
                End If
                Dim i As Integer = 0
                While i < appSettings.Count
                    Console.WriteLine("#{0} Key: {1} Value: {2}",i,_
                            appSettings.GetKey(i),appSettings(i))
                    System.Math.Max( _
                    System.Threading.Interlocked.Increment(i),i - 1)
                End While
            Catch e As ConfigurationErrorsException
                Console.WriteLine("[ReadAppSettings: {0}]",_
                                  e.ToString())
            End Try
        End Sub

        ' Get the ConnectionStrings section.        
        ' This function uses the ConnectionStrings 
        ' property to read the connectionStrings
        ' configuration section.
        Public Shared Sub ReadConnectionStrings()

            ' Get the ConnectionStrings collection.
            Dim connections _
            As ConnectionStringSettingsCollection = _
            ConfigurationManager.ConnectionStrings

            If connections.Count <> 0 Then

                Console.WriteLine()
                Console.WriteLine("Performed the following tasks:")
                Console.WriteLine("Read connection strings:")
                Console.WriteLine()

                ' Get the collection elements.
                For Each connection _
                As ConnectionStringSettings In connections
                    Dim name As String = connection.Name
                    Dim provider As String = connection.ProviderName
                    Dim connectionString As String = _
                    connection.ConnectionString

                    Console.WriteLine("Name:               {0}",_
                                      name)
                    Console.WriteLine("Connection string:  {0}",_
                                      connectionString)
                    Console.WriteLine("Provider:            {0}",_
                                      provider)
                Next
            Else
                Console.WriteLine()
                Console.WriteLine( _
                "No connection string is defined.")
                Console.WriteLine()
            End If
        End Sub


        ' Create the AppSettings section.
        ' The function uses the GetSection(string)method 
        ' to access the configuration section. 
        ' It also adds a new element to the section 
        ' collection.
        Public Shared Sub CreateAppSettings()
            ' Get the application configuration file.
            Dim config As System.Configuration.Configuration = _
            ConfigurationManager.OpenExeConfiguration( _
            ConfigurationUserLevel.None)

            Dim sectionName As String = "appSettings"

            ' Add an entry to appSettings.
            Dim appStgCnt As Integer = _
            ConfigurationManager.AppSettings.Count
            Dim newKey As String = "NewKey" + appStgCnt.ToString()

            Dim newValue As String = _
            DateTime.Now.ToLongDateString() + " " + _
            DateTime.Now.ToLongTimeString()

            config.AppSettings.Settings.Add(newKey,newValue)

            ' Save the configuration file.
            config.Save(ConfigurationSaveMode.Modified)

            ' Force a reload of the changed section. This 
            ' makes the new values available for reading.
            ConfigurationManager.RefreshSection(sectionName)

            ' Get the AppSettings section.
            Dim appSettingSection As AppSettingsSection = _
            DirectCast(config.GetSection(sectionName),_
            AppSettingsSection)

            ' Display raw xml.
            Console.WriteLine()
            Console.WriteLine("Performed the following tasks:")
            Console.WriteLine("Created AppSettings section.")
            Console.WriteLine("Added new element to the section.")
            Console.WriteLine("Read the following settings:")
            Console.WriteLine()

            ' Get the AppSettings XML.
            Console.WriteLine( _
            appSettingSection.SectionInformation.GetRawXml())
        End Sub

        ' Access a configuration file using mapping.
        ' This function uses the OpenMappedExeConfiguration 
        ' method to access the roaming and the application
        ' configuration files.   
        ' It then uses the the custom ConsoleSection from
        ' each file to console window colors.
        Public Shared Sub MapExeConfiguration()
            ' Cotains the selected configuration.
            Dim config As System.Configuration.Configuration

            ' Get the roaming configuration file.
            Dim roamingConfig As Configuration = _
            ConfigurationManager.OpenExeConfiguration( _
            ConfigurationUserLevel.PerUserRoaming)

            ' Get the application configuration file.
            Dim appConfig As Configuration = _
            ConfigurationManager.OpenExeConfiguration( _
            ConfigurationUserLevel.None)

            ' To map the selected configuration file.
            Dim configFileMap As New ExeConfigurationFileMap()

            ' Map roaming configuration. This allows
            ' access to the roaming configuration file.
            configFileMap.ExeConfigFilename = roamingConfig.FilePath

            ' Get the mapped configuration file
            config = _
            ConfigurationManager.OpenMappedExeConfiguration( _
            configFileMap,ConfigurationUserLevel.None)

            Dim sectionName As String = "consoleSection"

            Dim customSection As ConsoleSection = _
            DirectCast(config.GetSection(sectionName),_
            ConsoleSection)

            ' Set console properties using the 
            ' configuration values contained in the 
            ' mapped configuration file.
            Console.BackgroundColor = _
            customSection.ConsoleElement.BackgroundColor
            Console.ForegroundColor = _
            customSection.ConsoleElement.ForegroundColor
            Console.Clear()

            Console.WriteLine()
            Console.WriteLine("Performed following tasks:")
            Console.WriteLine( _
            "Mapped roaming configuration file: {0}",config.FilePath)
            Console.WriteLine( _
            "Set console colors from stored configuration values.")
            Console.WriteLine()
            Console.Write( _
            "Press Enter to switch to default colors.....")
            Console.ReadLine()

            ' Map roaming configuration. This allows
            ' access to the application configuration file.
            configFileMap.ExeConfigFilename = appConfig.FilePath

            ' Get the mapped configuration file
            config = _
            ConfigurationManager.OpenMappedExeConfiguration( _
            configFileMap,ConfigurationUserLevel.None)

            customSection = _
            DirectCast(config.GetSection(sectionName),_
            ConsoleSection)

            If customSection Is Nothing Then
                customSection = New ConsoleSection()

                ' Store console settings.
                customSection.ConsoleElement.BackgroundColor = _
                ConsoleColor.Black
                customSection.ConsoleElement.ForegroundColor = _
                ConsoleColor.White

                ' Add configuration information to the
                ' configuration file.
                config.Sections.Add(sectionName,customSection)
                config.Save(ConfigurationSaveMode.Modified)
                ' Force a reload of the changed section.
                ' This makes the new values available for reading.
                ConfigurationManager.RefreshSection(sectionName)
            End If
            ' Set console properties using the 
            ' configuration values contained in the 
            ' mapped configuration file.
            Console.BackgroundColor = _
            customSection.ConsoleElement.BackgroundColor
            Console.ForegroundColor = _
            customSection.ConsoleElement.ForegroundColor
            Console.Clear()

            Console.WriteLine( _
            "Mapped application configuration file: {0}",_
            config.FilePath)
            Console.WriteLine( _
            "Set console colors from stored configuration values.")
            Console.WriteLine()
        End Sub

        ' Access the machine configuration file using mapping.
        ' The function uses the OpenMappedMachineConfiguration 
        ' method to access the machine configuration. 
        Public Shared Sub MapMachineConfiguration()
            ' Get the machine.config3 file.
            Dim machineConfig As Configuration = _
            ConfigurationManager.OpenMachineConfiguration()
            ' Get the machine.config file path.
            Dim configFile _
            As New ConfigurationFileMap(machineConfig.FilePath)

            ' Map the application configuration file to the machine 
            ' configuration file.
            Dim config As Configuration = _
            ConfigurationManager.OpenMappedMachineConfiguration( _
            configFile)

            ' Get the AppSettings section.
            Dim appSettingSection As AppSettingsSection = _
            DirectCast(config.GetSection("appSettings"),_
            AppSettingsSection)
            appSettingSection.SectionInformation.AllowExeDefinition = _
            ConfigurationAllowExeDefinition.MachineToRoamingUser

            ' Display the configuration file sections.
            Dim sections As ConfigurationSectionCollection = _
            config.Sections

            Console.WriteLine()
            Console.WriteLine( _
            "Using OpenMappedMachineConfiguration.")
            Console.WriteLine( _
            "Sections in machine.config:")

            ' Get the sections in the machine.config.
            For Each section As ConfigurationSection In sections
                Dim name As String = section.SectionInformation.Name
                Console.WriteLine("Name: {0}",name)
            Next

        End Sub
    End Class
#End Region

#Region "User Interaction Class"

    ' Obtain user's input and provide feedback.
    ' This class contains the application Main() function.
    ' It calls the ConfigurationManager methods based 
    ' on the user's selection.
    Class ApplicationMain
        ' Display user's menu.
        Public Shared Sub DisplayUserMenu()
            Dim applicationName As String = _
            Environment.GetCommandLineArgs()(0)

            If Not applicationName.Contains(".exe") Then
                applicationName = _
                [String].Concat(applicationName,".exe")
            End If

            Dim buffer As New StringBuilder()

            buffer.AppendLine()
            buffer.AppendLine("Application: " + applicationName)
            buffer.AppendLine("Please,make your selection.")
            buffer.AppendLine("Q,q  -- Exit the application.")
            buffer.Append("1    -- Set console window colors")
            buffer.AppendLine(" to blue and yellow")
            buffer.AppendLine("        from the roaming configuration.")
            buffer.AppendLine("2    -- Ceate appSettings section.")
            buffer.AppendLine("3    -- Read appSettings section.")
            buffer.AppendLine("        Values merged from application config.")
            buffer.Append("4    -- Set console window colors")
            buffer.AppendLine(" to black and white")
            buffer.AppendLine("        from the application configuration.")
            buffer.AppendLine("5    -- Read connectionStrings section.")
            buffer.AppendLine("        Values merged from machine.config.")
            buffer.AppendLine("6    -- Get specified configuration file.")
            buffer.Append("        Set console window colors")
            buffer.AppendLine(" from configured values.")
            buffer.AppendLine("7    -- Get machine.config file.")
            buffer.AppendLine()

            Console.Write(buffer.ToString())
        End Sub

        ' Obtain user's input and provide
        ' feedback.
        Shared Sub Main(ByVal args As String())
            ' Define user selection string.
            Dim selection As String = ""

            ' Get the name of the application.
            Dim appName As String = _
            Environment.GetCommandLineArgs()(0)

            While selection.ToLower() <> "q"
                ' Process user's input.
                Select Case selection
                    Case "1"
                        ' Show how to use OpenExeConfiguration
                        ' using the configuration user level.
                        UsingConfigurationManager.GetRoamingConfiguration()
                        Exit Select
                    Case "2"
                        ' Show how to use GetSection.
                        UsingConfigurationManager.CreateAppSettings()
                        Exit Select
                    Case "3"
                        ' Show how to use AppSettings.
                        UsingConfigurationManager.ReadAppSettings()
                        Exit Select
                    Case "4"
                        ' Show how to use OpenExeConfiguration
                        ' using the configuration file path.
                        UsingConfigurationManager.GetAppConfiguration()
                        Exit Select
                    Case "5"
                        ' Show how to use ConnectionStrings.
                        UsingConfigurationManager.ReadConnectionStrings()
                        Exit Select
                    Case "6"
                        ' Show how to use OpenMappedExeConfiguration.
                        UsingConfigurationManager.MapExeConfiguration()
                        Exit Select
                    Case "7"
                        ' Show how to use OpenMappedMachineConfiguration.
                        UsingConfigurationManager.MapMachineConfiguration()
                        Exit Select
                    Case Else

                        ' DisplayUserMenu();
                        Exit Select
                End Select
                DisplayUserMenu()
                Console.Write("> ")
                selection = Console.ReadLine()
            End While
        End Sub
    End Class
#End Region
End Namespace
Blog - Comment List MSDN TechNet
Comments
  • #

    Introduction This post shows a console application that uses the ConfigurationManager class. The code

Leave a Comment
  • * Please enter a comment Please shorten the content to 3072 or less
  • *Please add 3 and 8 and type the answer here:
  • Post

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读