J'ai un code de bibliothèque qui est utilisé à partir de mon application et qui est également utilisé par une action personnalisée .NET dans un projet d'installation Visual Studio. Le code de bibliothèque utilise à son tour le bloc de journalisation de la bibliothèque d'entreprise pour effectuer sa consignation. Comment puis-je obtenir des informations de configuration sur la bibliothèque d'entreprise dans le contexte de mon action personnalisée exécutée dans msiexec? Est-il possible d'amorcer le mécanisme de configuration dans le code avant de faire des appels à EntLib?Comment utiliser la journalisation de bibliothèque d'entreprise dans une action personnalisée .NET
Mise à jour: J'ai produit un hack qui semble que cela va fonctionner, mais repose sur la définition d'un champ statique non-publique en utilisant la réflexion. Il est dommage que EntLib soit si étroitement couplé au .NET ConfigurationManager.
var factory = new LogWriterFactory(new FakeConfigSource("foo.config"));
var field = typeof (Logger).GetField("factory", BindingFlags.Static | BindingFlags.NonPublic);
field.SetValue(null, factory);
Logger.Write("Test");
Mise à jour 2: Bien que bidouille fonctionne dans un banc d'essai, lorsqu'il est exécuté dans le contexte de msiexec, le chargeur de montage ne trouve pas les ensembles référencés dans le fichier de configuration. Fuslogvw indique que AppBase est le répertoire Windows system32, ce qui est logique. Ce que je ne comprends pas c'est pourquoi les dépendances manifestes de l'assembly d'actions personnalisées (qui se trouvent dans le répertoire [TargetDir] à côté de l'assembly d'actions personnalisées) sont trouvées, mais pas les assemblys chargés dynamiquement appelés dans le fichier de configuration. Je ne vois pas comment.
Ouais, merci mais pas vraiment ce que je cherche. J'utilise le code de bibliothèque qui utilise la bibliothèque d'entreprise. Je n'ai pas vraiment besoin de me connecter, c'est simplement que le code profondément imbriqué utilisant l'entlib essaie de s'initialiser à partir de config. – jlew