Domanda

Sto scrivendo un .dll C # .NET 2.0 che è un plug-in in una Applicazione più grande . Il progetto Visual Studio per il mio modulo ha un file app.config che viene copiato in un MyProj.dll.config insieme a MyProj.dll.

Il piano prevede che MyProj.dll.config verrà modificato dopo la distribuzione di .dll. Sto cercando di leggere le mie impostazioni da quel file locale modificato. Ho provato a estrarre LocalFilesSettingsObject e cambiando il nome dell'applicazione nel mio .dll in questo modo:

        Properties.Settings config = Properties.Settings.Default;
        SettingsContext context = config.Context;
        SettingsPropertyCollection properties = config.Properties;
        SettingsProviderCollection providers = config.Providers;
        SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
        configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
        config.Initialize(context, properties, providers);
        config.Reload();

Questo non funziona. Sto lottando per avvolgere la testa attorno a tutto il pasticcio delle Impostazioni .NET. Vorrei una ricetta per finire questo compito. Vorrei anche un link a una chiara spiegazione (con esempi) di come le impostazioni dovrebbero funzionare in .NET 2.0

È stato utile?

Soluzione

Dovrai caricare x.dll.config (con l'API di configurazione) da solo. Tutta la gestione automatica dei file (incluso il .Settings ) riguarda esclusivamente machine.config / y.exe.config / user-settings.

Per aprire un file di configurazione denominato:

  • Riferimento System.Configuration.dll assembly.
  • Uso di System.Configuration
  • Crea codice come:

    Configuration GetDllConfiguration(Assembly targetAsm) {
      var configFile = targetAsm.Location + ".config";
      var map = new ExeConfigurationFileMap {
        ExeConfigFilename = configFile
      };
      return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    }
    

Altri suggerimenti

1- apri il file app.config in Visual Studio

2- in " configurazione " tag aggiungi le tue configurazioni in tag " appSettings " come muggito:

<configuration>
    <appSettings>
        <add key="UserName" value="aaa"/>
        <add key="Password" value="111"/>
    </appSettings>
</configuration>

3- nel codice c #

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;

e non dimenticare di aggiungere questi 2 utilizzi per " ConfigurationManager " e per " Assembly "

  • utilizzando System.Configuration;
  • utilizzando System.Reflection;

se System.Configuration non viene visualizzato, devi aggiungere il riferimento " System.Configuration " nei riferimenti

4- puoi aggiornare le configurazioni per la dll come qui sotto:

  • apri il file " MyProj.dll.config "
  • quindi aggiorna le tue configurazioni
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top