App.Config con soluzioni multiprogetto

lunedì 10 settembre 2007 - 10.07

astroman Profilo | Junior Member

Ciao a tutti,
ho un problema alquanto "misterioso" da mio punto di vista...
In sintensi il problema è il seguente: ho una solution con 2 progetti al suo interno, una windows form che si usa da tester e l'altra come classlibrary.Nella class library sono andato ad aggiungere un semplice app.config con i seguenti dati

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Sns.Snr.Bol.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>

</configSections>
<userSettings>
<Sns.Snr.Bol.My.MySettings>
<setting name="LICENSECODE" serializeAs="String">
<value>11</value>
</setting>
</Sns.Snr.Bol.My.MySettings>
</userSettings>

<appSettings>
<add key="rptConnString" value="Data Source=zzz;Initial Catalog=yyy;Persist Security Info=True;User ID=sa;Password=aaa" />
<add key="ComPort" value="COM3" />
<add key="BaudRate" value="9600" />
</appSettings>
</configuration>

nella classlibrary semplicemente vado a richiamare la configurazione

dim _rptConnString as string = ConfigurationManager.AppSettings("rptConnString")
dim _comPort as string = ConfigurationManager.AppSettings("ComPort")
dim _baudRate as string = ConfigurationManager.AppSettings("BaudRate")

e cerco di visualizzare/far girare il tutto nell'altro applicativo windows form....ma mi torna in ogni caso nothing!

Sto diventando cretino da giorni ma non trovo una soluzione...qualcuno ha qualche idea?

Grazie a tutti

AndreaKpr Profilo | Senior Member

Ciao
Io per andare a leggere un App.config simile al tuo faccio cosi :

private static Configuration m_Config;
m_Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

_rptConnString = m_Config.AppSettings.Settings["rptConnString"].Value.ToString();
_ComPort = m_Config.AppSettings.Settings["ComPort"].Value.ToString();
_BaudRate = m_Config.AppSettings.Settings["BaudRate"].Value.ToString();

Dove ovviamente il nome del file del'"app.config " è : "NomeEseguibile.Exe.Config"

Ziao!

astroman Profilo | Junior Member

Ciao e grazie,
in ogni caso tradotto in Vb.Net il tuo codice sarebbe questo

Dim m_Config As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

_rptConnString = m_Config.AppSettings.Settings("rptConnString").Value
_comPort = m_Config.AppSettings.Settings("ComPort").Value
_baudRate = m_Config.AppSettings.Settings("BaudRate").Value

che appena cerca di eseguire m_Config.AppSettings.Settings("rptConnString").Value và in errore perchè torna nothing

Forse non mi son spiegato bene...in pratica quando cerca sul tester di leggere il file config (che il tester di per suo NON ha nessun file config poichè residente solo nell'altro progetto) dice che non riesce a trovarlo...hai mai provato a usare 2 progetti per fare questo test?
Ciao

AndreaKpr Profilo | Senior Member

.

AndreaKpr Profilo | Senior Member

RiCiao
>hai mai provato a usare 2 progetti per fare questo test?

Per fare sto test no, ma Ovviamente si per quanto riguarda la prassi lavorativa.
Ma a differenza tua non l'app.Config non sta sulla dll ma sull'exe

Quindi quando dalla Dll cerca di caricare il file .config, la stesa carica il .config composto dal nome dell'exe chiamante.

A questo punto se tu non parti da un exe, dovresti cambiare il metodo e non usare "OpenExeConfiguration"

astroman Profilo | Junior Member

La cosa strana è appunto questa...perchè carica il file cfg dell'app.config della dll per quanto riguarda la licensecode mentre l'appsettings non la vede...

E' come se gli mancasse un riferimento e non riesco a capire quale...son così disperato che mi son preso a serializzare a gogo per portare i file di configurazione su un file xml! :P
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