Aggiornare App.config e riavviare l'applicazione

martedì 08 settembre 2009 - 12.20

volperubbia Profilo | Senior Member

Ciao a tutti,
nella mia applicazione WinForm 2.0 ho un form che va agggiornare le costanti di configurazione.

Nell'app.config ho:

<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MiaApplicazione.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
.....................
<applicationSettings>
<MiaApplicazione.My.MySettings>
<setting name="MiaChiave" serializeAs="String">
<value>Pippo</value>
</setting>
</MiaApplicazione.My.MySettings>
</applicationSettings>

Mentre il codice vb che uso per aggiornare è questo:

Dim elm As System.Configuration.SettingElement = Nothing
Dim config As System.Configuration.Configuration = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None)
Dim grpApp As System.Configuration.ConfigurationSectionGroup = config.GetSectionGroup("applicationSettings")
Dim secPropSet As System.Configuration.ClientSettingsSection = DirectCast(grpApp.Sections("MiaApplicazione.My.MySettings"), System.Configuration.ClientSettingsSection)
secPropSet.SectionInformation.ForceSave = True
elm = secPropSet.Settings.Get("MiaChiave")
elm.Value.ValueXml.InnerText = ....................
................
config.Save()
My.Settings.Reload()

Funziona.
Ma anzichè andare ad aggiornare l'app.config, come mi sarei aspettato
(ho usato la stessa tecnica in una webApplication e qui aggiorna il web config),
mi va ad aggiornare il file MiaApplicazione.vshost.exe.config (se sono in debug
con visual studio) o MiaApplicazione.exe.config (quando lancio l'esecuzione standard).

Inoltre, quando sono in debug con visual studio, se aggiorno i valori, chiudo e riavvio
il debug, perdo l'aggiornamento (i valori sono giusti nel file, ma mi legge quelli originali).

E' giusto questo comportamento?
O c'è un modo per fargli aggiornare sempre e solo l'app.config?

Dopo l'istruzione My.Settings.Reload(), c'è un modo da codice per far ripartire
l'applicazione? O basta richiamare il codice contenuto nel load del form di avvio?

Esempio:

Public Class frmAvvio
Private Sub frmAvvio_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Start()
End Sub
Private Sub Start()
...................
End Sub
End Class

Grazie per l'attenzione,
Davide

freeteo Profilo | Guru

Ciao,

>E' giusto questo comportamento?
>O c'è un modo per fargli aggiornare sempre e solo l'app.config?
che io sappia il nome del file di configurazione è "nomeapplicazione.exe.config" proprio perchè potrebbero esserci diversi exe nella stessa directory, a differenza invece di un sito asp.net dove l'unico sito che parte è quello relativo alla directory che lo contiene 8altrimenti devi fare delle sottocartelle virtuali, e quindi ecco che hai web.config per ognuna di queste).



>Dopo l'istruzione My.Settings.Reload(), c'è un modo da codice
>per far ripartire
>l'applicazione? O basta richiamare il codice contenuto nel load
>del form di avvio?
se vuoi riavviare completamente l'applicazione puoi usare il metodo: Application.Restart() che sei sicuro riavvi come lo facessi da Windows, non so se è questo che vuoi ottenere...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

volperubbia Profilo | Senior Member

Ciao Matteo,
le sai sempre tutte, ... Si Application.Restart() è quello che mi serviva.
Per quanto riguarda l'aggiornamento delle configurazioni confermo che, andando
in debug con vs, va a scrivere MiaApplicazione.vshost.exe.config, e poi riavviando
nuovamente il debug torna a leggere l'app.config originale.
Cumunque mi premeva più che altro l'esecuzione normale.

Grazie mille,
Davide
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5