2009-08-24 10 views
6

La propiedad Environment.CurrentDirectory siempre devuelve la ruta del directorio del sistema en lugar de mi directorio de aplicaciones. En la PC de mi colega, devuelve el directorio de la aplicación.Environment.CurrentDirectory in C# .NET

¿Cuál es el problema? ¿Cómo puedo resolverlo?

El siguiente código está trabajando para mí

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

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

El siguiente código no está funcionando para mí

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

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

Este archivo .dll se puede utilizar en VB 6 y aplicaciones ASP.NET

+0

Agregue un poco más de información ... tal vez un fragmento de código y explicando lo que está tratando de hacer lo ayudará a obtener una respuesta. – Gishu

+0

¿Es una aplicación de Windows Forms? – Jehof

+0

Es una biblioteca de clases. Pero se puede usar en aplicaciones VB 6 y ASP.NET – gopal

Respuesta

1

Sospecho que esto podría tener algo que ver con el ID de usuario actual con el que se ejecuta la aplicación, por ejemplo, si está ejecutando la aplicación en una sesión de usuario (por ejemplo, depuración en VS), entonces este puede devolver su directorio actual, pero si lo estaba ejecutando bajo IIS, ¿podría ser por eso que está en default en la carpeta del sistema?

3

No debe usar el valor Environment.CurrentDirectory como base para las búsquedas de archivos porque puede cambiar y puede que no siempre esté bajo su control. p.ej. un archivo Guardar Como en una carpeta diferente puede cambiar el valor de la "carpeta actual". Como puede ver, puede producir resultados impredecibles.

Utilice un valor que pueda controlar mejor. p.ej. un valor ResourcesFolderPath en un archivo de configuración (xml?) que se actualiza al instalar su aplicación.

10

configurar el directorio actual

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

Environment.CurrentDirectory //now returns your app path 
5

Uso

System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly() Localización.);