5

Quando si crea un componente aggiuntivo di Visual Studio, come si può utilizzare un'app.config per il componente aggiuntivo. Se ne aggiungo uno al progetto e lo distribuisco, quindi quando il componente aggiuntivo viene eseguito e cerco di accedere a livello di codice tramite ConfigurationManager.AppSettings, non preleva il file di configurazione per il componente aggiuntivo.
Sto facendo qualcosa di sbagliato o c'è un altro mezzo per accedere alle impostazioni di configurazione basate su file per un componente aggiuntivo?Esiste un file di tipo config per il componente aggiuntivo di Visual Studio?

risposta

7

ConfigurationManager.AppSettings preleva il file di configurazione per l'AppDomain in cui è stato caricato. Questo file di configurazione è in genere quello associato all'eseguibile del punto di ingresso. Nel tuo caso, non controlli l'eseguibile del punto di ingresso né l'AppDomain in cui esegui, quindi non puoi utilizzare ConfigurationManager.AppSettings.

La domanda si riduce sostanzialmente a "Come posso avere un file di configurazione associato a una DLL?" (C# Dll config file). Devi fare due cose:

  1. Aggiungere un elemento di file di configurazione dell'applicazione al progetto e assicurarsi di distribuirlo nella stessa cartella della DLL.
  2. Accedere al file di configurazione dalla DLL utilizzando il codice in questo modo:

    string pluginAssemblyPath = Assembly.GetExecutingAssembly().Location; 
    Configuration configuration = ConfigurationManager.OpenExeConfiguration(pluginAssemblyPath); 
    string someValue = configuration.AppSettings.Settings["SomeKey"].Value; 
    

che sarà sicuramente lavorare per le DLL regolari che non vengono caricati utilizzando copia shadow. Non sono sicuro di come VS carica i suoi plugin. Se si verificano problemi, fammelo sapere e posso pubblicare un lavoro per le DLL che vengono caricate tramite la copia shadow.

Problemi correlati