chiamando il componente c # gestito dal codice c ++ non gestito, come definisco config
Domanda
Voglio chiamare un componente C # da un servizio c ++ non gestito. Devo impostare gli elementi di configurazione previsti dal componente C #. Quale nome dovrebbe essere configurato e dove dovrebbe trovarsi.
ad es. ParentFolder \ cplusplusservice.exe
anotherfolder \ csharp.dll
Ho bisogno di csharp.dll.config o suo equivalente.
Grazie,
Soluzione
Il file .config deve essere identico al nome dell'applicazione. Quando il codice non gestito chiama per la prima volta nel codice gestito, viene creato un AppDomain che AppDomain controlla quale file di configurazione viene caricato e da dove.
Dovrai copiare manualmente il file .config nella directory di output e nominarlo dopo il nome dell'applicazione o creare un post-build per farlo.
Fondamentalmente le stesse regole che si applicano a dove i file .config devono essere per le app gestite pure si applicano alle app non gestite che caricano codice gestito.
Altri suggerimenti
Questo articolo mostra come utilizzare i file di configurazione con c #:
http://www.devasp.net/net/articles/display /679.html
Questo articolo fornisce una panoramica delle chiamate al componente c # gestito da c ++ non gestito e viceversa, nonché alcune classi di supporto:
http://www.codeproject.com/KB/mcpp/unmanaged_to_managed.aspx
Dipende da come viene creato AppDomain che ospita il tuo codice gestito.
Ad esempio, se stai esponendo il codice gestito come COM, verrà caricato nell'AppDomain predefinito e il file di configurazione sarà nella stessa directory dell'eseguibile (parentfolder \ cplusplusservice.exe.config nel tuo caso) .
Se stai creando l'AppDomain da solo, puoi controllare dove si trova il file di configurazione.