paths current combine c# .net path

current - C#obteniendo la ruta de% AppData%



paths in c# (8)

En .net2.0 puede usar la variable Application.UserAppDataPath

C # 2008 SP1

Estoy usando el siguiente código:

dt.ReadXml("%AppData%//DateLinks.xml");

Sin embargo, recibo una excepción que apunta a la ubicación desde donde se ejecuta mi aplicación:

No se pudo encontrar una parte de la ruta ''D: / Projects / SubVersionProjects / CatDialer / bin / Debug /% AppData% / DateLinks.xml''.

Pensé que el %AppData% debería encontrar la ruta relativa. Cuando voy a Start|Run|%AppData% Windows Explorer me lleva a ese directorio.

No puedo ingresar la ruta completa, ya que el usuario es diferente en cada máquina cliente.

Muchas gracias por cualquier consejo,


Esto está funcionando para mí en una aplicación de consola.

string appData = System.Environment.GetEnvironmentVariable("APPDATA");


La MEJOR manera de usar el directorio AppData, es usar el método Environment.ExpandEnvironmentVariable .

Razones:

  • reemplaza partes de su cadena con directorios válidos o lo que sea
  • es insensible a mayúsculas
  • Es fácil y sin complicaciones.
  • es una norma
  • bueno para tratar con la entrada del usuario

Ejemplos:

string path; path = "%AppData%/stuff"; path = "%aPpdAtA%/HelloWorld"; path = "%progRAMfiLES%/Adobe;%appdata%/FileZilla"; // collection of paths path = Environment.ExpandEnvironmentVariables(path); Console.WriteLine(path);

Recuerde que algunos usuarios %appdata% %AppData% , algunos %appdata% y algunos %APpData% que no desea terminar:

if (path.ToLower().StartsWith("%appdata%")) ; // path manipulation if (path.ToLower().StartsWith("%programfiles%")) ; // path manipulation

Si la variable de entorno no está establecida, no es su culpa (además de cuando ES ). Por lo general, no le digo a la gente que no vuelva a inventar la rueda, pero después de eso fui por el otro lado y me di cuenta de que era una mala idea.


La ruta es diferente si estás hablando de ASP.NET.

No pude encontrar ninguno de los valores de ''SpecialFolder'' que apuntaban a / App_Data para ASP.NET.

En su lugar necesitas hacer esto:

HttpContext.Current.ApplicationInstance.Server.MapPath("~/App_Data")

(Nota: no necesita la propiedad ''Actual'' en un controlador MVC)

Si hay otra forma más ''abstracta'' de llegar a App_Data , me encantaría saber cómo.


No creo que poner% AppData% en una cadena como esa funcione.

tratar

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString()


Para obtener el directorio AppData , es mejor usar el método GetFolderPath :

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

%AppData% es una variable de entorno, y no se expanden automáticamente en ningún lugar en .NET, aunque puede usar explícitamente el método Environment.ExpandEnvironmentVariable para hacerlo. Sin embargo, le sugeriría encarecidamente que utilice GetFolderPath , ya que, como señala Johannes Rössel en el comentario, es posible que %AppData% no se establezca en determinadas circunstancias.

Finalmente, para crear la ruta como se muestra en su ejemplo:

var fileName = Path.Combine(Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData), "DateLinks.xml");


Solo quería compartir otra forma de acceder a la carpeta ''App_Data'' en mi aplicación mvc en caso de que alguien necesite esto.

Path.Combine(HttpRuntime.AppDomainAppPath,"App_Data")


También puedes usar

Environment.ExpandEnvironmentVariables("%AppData%//DateLinks.xml");

para expandir la variable %AppData% .