ConfigurationManager.GetSection Donne une Erreur “impossible de charger le type de...de l'assemblée...”
Mon app.config fichier est comme suit:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="ProcessConfiguration" type="Configuration.ProcessConfigurationSection, Configuration" />
</configSections>
<ProcessConfiguration>
<processes>
<process name="Process1" />
</processes>
</ProcessConfiguration>
</configuration>
J'ai le texte suivant (séparée) classes pour obtenir la configuration:
namespace Configuration
{
using System.Configuration;
public class ProcessesConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("processes", IsDefaultCollection = false)]
[ConfigurationCollection(typeof(ProcessCollection))]
public ProcessCollection Processes
{
get
{
return (ProcessCollection)base["processes"];
}
}
}
}
namespace Configuration
{
using System.Configuration;
public class ProcessCollection : ConfigurationElementCollection
{
public ProcessConfig this[int index]
{
get
{
return (ProcessConfig)BaseGet(index);
}
set
{
BaseAdd(index, value);
}
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ProcessConfig)element).Name;
}
protected override ConfigurationElement CreateNewElement()
{
return new ProcessConfig();
}
}
}
namespace Configuration
{
using System.Configuration;
public class ProcessConfig : ConfigurationElement
{
[ConfigurationProperty("name", IsRequired = true, IsKey = true)]
public string Name
{
get
{
return (string)this["name"];
}
set
{
this["name"] = value;
}
}
}
}
Cependant lorsque je tape cette ligne de code:
var processConfigurationSection = ConfigurationManager.GetSection("ProcessConfiguration") as ProcessesConfigurationSection;
Je reçois le message d'erreur qui dit:
Une erreur s'est produite de la création du gestionnaire de section de configuration pour
ProcessConfiguration: impossible de charger le type
De Configuration.ProcessConfigurationSection " de l'assemblée
'Configuration'.
Je suis complètement perplexe, si quelqu'un peut m'aider, j'apprécierais vraiment.
- Vous aurez envie de débogage à l'aide de la Fusion de la visionneuse du journal. assurez-vous de vous lancer en tant qu'admin, tourner sur le journal, et de le redémarrer avant de tenter de le déboguer. Vous verrez où le CLR est à la recherche de l'assemblée, et quelle version, et à partir de là, de déterminer pourquoi il n'est pas trouvé, si c'est la question.
- quel est le nom de la DLL que vous construisez?
- Est votre type
ProcessesConfigurationSection
défini dans l'entrée de l'assemblée? - Je viens de l'avoir dans une application console tout à l'heure, nommé "Configuration". Andrii, où dois-je regarder pour voir si le type est défini dans l'entrée de l'assemblée? Merci.
Vous devez vous connecter pour publier un commentaire.
Dans la ligne:
Le nom "Configuration", doivent se référer à la DLL que vous re construction, s'il vous plaît essayer de vérifier cela et de les corriger si nécessaire.
Je pense aussi qu'on peut avoir une faute de frappe, dans votre code, le nom du type est:
(Notez le Processus de vs Processus)
Cette erreur a été soulevée parce que l'invocation de l'assemblée ne pouvait pas charger le type de classe dans l'assembly spécifié. Cette erreur peut être causée par un espace après le nom du type (ce qui m'est arrivé), par exemple, la configuration suivante section
va générer cette erreur de trop.