2009-08-24 12 views
6

Die Eigenschaft Environment.CurrentDirectory gibt immer den Pfad des Systemverzeichnisses anstelle meines Anwendungsverzeichnisses zurück. Auf dem PC meines Kollegen gibt es das Anwendungsverzeichnis zurück.Environment.CurrentDirectory in C# .NET

Was ist das Problem? Wie kann ich es lösen?

Der folgende Code ist für mich arbeiten

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

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

Der folgende Code nicht für mich

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

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

Diese DLL-Datei verwendet in VB 6 und ASP.NET-Anwendungen werden können, arbeitet

+0

Fügen Sie weitere Informationen hinzu ... vielleicht hilft Ihnen ein Code-Snippet, zu erklären, was Sie tun möchten, um eine Antwort zu erhalten. – Gishu

+0

Ist es eine Windows Forms-Anwendung? – Jehof

+0

Es ist eine Klassenbibliothek. Aber kann in VB 6 und ASP.NET-Anwendungen verwendet werden – gopal

Antwort

1

Ich vermute, dass dies etwas mit der aktuellen Benutzer-ID zu tun haben könnte, unter der die App läuft, zum Beispiel, wenn Sie die App in einer Benutzersitzung (z. B. Debugging in VS) ausführen kann Ihr aktuelles Verzeichnis zurückgeben, aber wenn Sie es unter IIS ausgeführt haben, könnte dies der Grund sein, warum es sich um den Systemordner handelt?

3

Sie sollten den Environment.CurrentDirectory-Wert nicht als Basis für Dateisuchen verwenden, da er sich ändern kann und nicht immer unter Ihrer Kontrolle steht. z.B. Eine Datei Speichern unter in einem anderen Ordner kann den Wert des aktuellen Ordners ändern. Wie Sie sehen können, kann es zu unvorhersehbaren Ergebnissen führen.

Verwenden Sie einen Wert, den Sie besser steuern können. z.B. Ein ResourcesFolderPath-Wert in einer Konfigurationsdatei (XML?), die bei der Installation der App aktualisiert wird.

10

gesetzt aktuelles Verzeichnis

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

Environment.CurrentDirectory //now returns your app path 
5

Verwenden

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