Est-ce que les répertoires spring.net recurse sous?
-
06-09-2019 - |
Question
Lorsque le cadre de spring.net démarre une application asp.net fait le composant qui enregistre tous les objets dans le conteneur IoC récursion tous les sous-répertoires référencés dans le web.config?
par exemple.
<spring>
<context>
<resource uri="~/bin/ClientService/ClientService.config"/>
<resource uri="~/MCFModule.config"/>
</context>
</spring>
Je crois que la réponse à la recherche oui à l'info de débogage (écouteur de la trace) de sortie.
Le problème que je vois est que quand il tente de créer une instance dans le « \ bin \ clientservice » répertoire il échoue avec le message d'erreur même si la dll existe dans le sous-répertoire;
'Impossible de charger le fichier ou l'assembly 'log4net, Version = 1.2.10.0, Culture = neutral, PublicKeyToken = 1b44e1d426115821' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
Toute personne a des idées?
Vive
Ollie
La solution
Vous avez également la possibilité de gérer les défaillances de charge programme de montage, en utilisant la
AppDomain.AssemblyResolve
événement sur la classe AppDomain.
Vous pouvez, par exemple, analyser tous les sous-répertoires à la recherche de l'assemblage que vous aimez.
Autres conseils
Quand Spring.NET tente de résoudre une référence dans son fichier de configuration, il utilisera le même règles comme chargeur d'assemblage .NET. vous pourriez peut-être essayer d'ajouter la référence correcte de l'ensemble de log4net dans votre dossier bin.
EDIT: Si vous voulez Spring.NET pour localiser des ensembles dans des endroits non standard, vous pouvez utiliser le
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
</configSections>
<spring>
<context>
<resource uri="config://spring/objects"/>
</context>
<objects xmlns="http://www.springframework.net">
<object id="someObject" type="log4net.Util.AppenderAttachedImpl, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</objects>
</spring>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net"
publicKeyToken="1b44e1d426115821"
culture="neutral" />
<codeBase version="1.2.10.0
href="file:///c:/some_special_location/log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Et vous pouvez alors demander le récipient pour instancier l'objet:
var someObject = ContextRegistry.GetContext().GetObject("someObject");