2010-01-31 10 views
5

Qualcuno ha un buon esempio o classe di supporto che mi consenta di leggere la stringa di connessione in un'applicazione Web da un modello T4 che risiede in UN ALTRO assieme a cui fa riferimento l'applicazione Web. Sto generando del codice dal database a cui fa riferimento e vorrei chiedere aiuto su come ottenere la stringa di connessione per questo uso. ive leggere l'esempio di George Js here tuttavia funziona solo quando il modello risiede nell'app Web, per favore aiuto !!!leggere web.config da un altro assieme utilizzando t4

+0

così vediamo se i capisci lo scenario ... hai una web app. si dispone di un modello che è possibile modificare ma è compilato in un assembly di riferimento separato. Quando esegui la trasformazione, vuoi essere in grado di leggere il web.config dell'app web di riferimento? secondo dettaglio necessario: come si esegue il modello? interattivo da VS o programmaticamente @ runtime? Se riesci a chiarire queste domande, sono fiducioso che si possa avere una soluzione semplice. –

+0

Sei azzeccato. il modello è in un'associazione referenziata diversa dall'app web effettiva, per rispondere alla tua domanda in un primo momento solo per essere in grado di eseguirlo in modo interattivo in fase di progettazione in vs .. per ora. Stiamo studiando una build integrata, abbiamo svn in esecuzione e la costante modifica della stringa di connessione dei template ci sta guidando in modo indolente (db è nella cartella app_data). Sto cercando un modo per fare riferimento al db nella cartella app_data usando percorsi relativi (o assoluti) per ottenere il file stesso. –

risposta

3
var path = Host.ResolvePath(@"../Web.config"); 
var map = new ExeConfigurationFileMap { ExeConfigFilename = path };   
var config = ConfigurationManager.OpenMappedExeConfiguration(
              map,ConfigurationUserLevel.None); 
var appSettings = config.AppSettings; 
var connectionStrings = config.ConnectionStrings.ConnectionStrings; 
1

Si potrebbe provare a fare qualcosa di simile:

var config = ConfigurationManager.OpenExeConfiguration("../somePathTo/web.config") 
// use the config to get values like: config.AppSettings 
+0

hey rob, il modello t4 viene eseguito con uno strumento personalizzato e quindi i percorsi relativi non funzionano come nel contesto dello strumento e non nel progetto. –

+0

Se si chiama Assembly, è possibile eseguire sth. In questo modo: Nuovo Uri (Assembly.GetCallingAssembly(). CodeBase) .AbsolutePath Ciò funzionerebbe solo se lo strumento personalizzato utilizza chiamate API per eccedere T4. Potrebbe essere il tuo strumento personalizzato in grado di fornire qualche tipo di parametro del percorso o scrivere le informazioni sul percorso in una sorta di archivio dati condiviso. (XML-File della directory excecuting)? Sarebbe bello avere maggiori informazioni. – Robert

+0

questo è il risultato della chiamata sopra a <# = System.Reflection.Assembly.GetCallingAssembly(). CodeBase #> file: /// C: /Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualStudio. TextTemplating.10.0/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.TextTemplating.10.0.dll –

0

dopo un po 'di ricerca in giro Ive ha trovato la mia risposta in t4 si può usare

path = Host.ResolvePath(relativeFileName) 
Problemi correlati