2008-09-26 5 views
1

J'ai une classe qui utilise une méthode d'échange de répertoire pour le répertoire Environment.CurrentDirectory. Le code ressemble à ceci:AppDomain et le répertoire courant

var str = Environment.CurrentDirectory; 
Environment.CurrentDirectory = Path.GetDirectoryName(pathToAssembly); 
var assembly = Assembly.Load(Path.GetFileNameWithoutExtension(pathToAssembly)); 
Environment.CurrentDirectory = str; 

Comme mon post plus tôt, nous utilisons cette méthode de commutation de répertoire pour permettre le chargement de l'assemblage spécifié ainsi que toutes les assemblées de références, ainsi que des ensembles non gérés. Le problème que j'ai est que cette fonction est exécutée dans deux AppDomains distincts. Dans AppDomain A (un AppDomain que je crée), le code fonctionne correctement. Dans AppDomain B (l'AppDomain par défaut), il lève FileNotFoundException. Pour les deux appels, j'essaie de charger le même assemblage. Toute idée de pourquoi ce serait le cas?

+0

De quel fichier se plaignent-ils - l'assemblage que vous essayez de charger ou une dépendance? –

+0

L'assemblage que j'essaie de charger –

Répondre

1

Cette post suggère que vous ne pouvez pas changer le chemin de recherche du domaine principal AppDomain une fois qu'il est chargé - vous devez le définir dans le fichier de configuration - et a un certain nombre de suggestions, même si elles se résument à "vous ne pouvez pas le faire dans l'AppDomain principal".

+0

Oui, j'ai passé environ 4 heures aujourd'hui à essayer d'obtenir celui-ci correctement (je ne me souciais même pas de l'AppDomain primaire, j'en ai créé un nouveau, et j'ai toujours eu des problèmes). Dans mon cas, j'aurais préféré ne pas utiliser la route App.Config, mais c'est le meilleur scénario pour moi. –

Questions connexes