2009-08-24 10 views
6

La propriété Environment.CurrentDirectory renvoie toujours le chemin du répertoire système à la place du répertoire de l'application. Sur le PC de mon collègue, il renvoie le répertoire de l'application.Environment.CurrentDirectory in C# .NET

Quel est le problème? Comment puis-je le résoudre?

Le code suivant fonctionne pour moi

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", AppDomain.CurrentDomain.BaseDirectory)); 

AppDomain.CurrentDomain.BaseDirectory - Returns the directory E:\MyApplications\. 

Le code suivant ne fonctionne pas pour moi

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", Environment.CurrentDirectory)); 

Environment.CurrentDirectory - Returns c:\windows\system32. 

Ce fichier .dll peut être utilisé dans VB 6 et applications ASP.NET

+0

Ajoutez plus d'informations ... peut-être un extrait de code et d'expliquer ce que vous essayez de faire vous aider à obtenir une réponse. – Gishu

+0

S'agit-il d'une application Windows Forms? – Jehof

+0

C'est une bibliothèque de classes. Mais peut être utilisé dans les applications VB 6 et ASP.NET – gopal

Répondre

1

Je soupçonne que cela pourrait avoir quelque chose à voir avec l'ID de l'utilisateur actuel sous lequel l'application s'exécute, par exemple si vous exécutez l'application dans une session utilisateur (par exemple le débogage dans VS) puis cette peut renvoyer votre répertoire actuel, mais si vous l'exécutez sous IIS, cela pourrait être la raison pour laquelle il est par défaut dans le dossier système?

3

Vous ne devez pas utiliser la valeur Environment.CurrentDirectory comme base pour les recherches de fichiers car elle peut changer et n'est pas toujours sous votre contrôle. par exemple. un fichier Save As dans un dossier différent peut changer la valeur du 'dossier actuel'. Comme vous pouvez le voir, cela peut donner des résultats imprévisibles.

Utilisez une valeur que vous pouvez mieux contrôler. par exemple. une valeur ResourcesFolderPath dans un fichier de configuration (xml?) mis à jour lors de l'installation de votre application.

10

dossier courant

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //or set executing Assembly location path in param 

Environment.CurrentDirectory //now returns your app path 
5

Utilisez

System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly() Endroit.);