VB.NET 2008 Scrittura settings di applicazione
Gli Application Settings sono in sola lettura e non è possibile modificarli e salvarli tramite My.Settings. Talvolta però nasce l’esigenza si porteli midificare si pensi ad esempio nel caso di sviluppo di tool in cui si voglia utilizzare il file confing per mantenere le impostazioni che devono essere uguali per tutti gli account utente.
Di seguito una semplice funzione per impostare un Setting con scope Application, per aggiornare i settings dopo aver scritto su file il valore sarà sufficiente invocare la My.Settings.Reload()
Public Shared Sub WriteApplicationSetting(ByVal settingName As String, ByVal value As String)
Const sectionGroupName As String = “applicationSettings”
Dim sectionName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name & _
“.My.MySettings”
‘Lettura configurazione
Dim config = System.Configuration.ConfigurationManager.OpenExeConfiguration( _
Configuration.ConfigurationUserLevel.None)
‘Ricerca sezione applicationSettings
Dim applicationSettingsSection As System.Configuration.ClientSettingsSection = _
DirectCast(config.SectionGroups(sectionGroupName).Sections(sectionName), System.Configuration.ClientSettingsSection)
‘Impostazione Valore
applicationSettingsSection.Settings.Get(settingName).Value.ValueXml.InnerText = value
applicationSettingsSection.SectionInformation.ForceSave = True
‘Salvataggio valore
config.Save()
‘Refresh sezione per forzare la lettura da file
System.Configuration.ConfigurationManager.RefreshSection(applicationSettingsSection.SectionInformation.SectionName)
‘Rilascio risorse
applicationSettingsSection = Nothing
config = Nothing
End Sub
In modo analogo è possibile scrivere una Setting di tipo ConnectionString
Public Shared Sub WriteConnectionStringsSetting(ByVal name As String, ByVal value As String)
Const sectionName As String = “connectionStrings”
Dim connectionStringName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name & _
“.My.MySettings.” & name
‘Lettura configurazione
Dim config = System.Configuration.ConfigurationManager.OpenExeConfiguration( _
Configuration.ConfigurationUserLevel.None)
‘Ricerca sezione applicationSettings
Dim connectionStringsSection As System.Configuration.ConnectionStringsSection = _
DirectCast(config.Sections(sectionName), System.Configuration.ConnectionStringsSection)
‘Impostazione Valore
connectionStringsSection.ConnectionStrings(connectionStringName).ConnectionString = value
‘Salvataggio valore
config.Save()
‘Refresh configurazione per forzare lettura da file
System.Configuration.ConfigurationManager.RefreshSection(connectionStringsSection.SectionInformation.SectionName)
‘Rilascio risorse
connectionStringsSection = Nothing
config = Nothing
End Sub