Leggendo dll.config (non app.config!) Da un modulo plugin
-
05-07-2019 - |
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
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