Tenemos una serie de aplicaciones de consola .NET Core que se instalan en un directorio particular:
/users/apps/app1/MyApp1 /users/apps/app2/MyApp2etc...
Las aplicaciones funcionan bien. Sin embargo, tenemos un problema en el que el tiempo de ejecución de .NET parece colocar algunos archivos en una carpeta ".net" en el directorio de inicio del usuario actual.
unclejoe@myhost::/home/unclejoe> ls -la total 40 drwx------. 8 unclejoe mygroup 139 Jan 24 14:42 . drwxr-xr-x. 90 root root 4096 Jan 21 15:29 .. -rw-------. 1 unclejoe mygroup 15510 Jan 24 14:42 .bash_history drwx------. 10 unclejoe mygroup 190 Jan 24 01:42 .netDentro de la carpeta .net, vemos un montón de carpetas aparentemente temporales:
[unclejoe@myhost .net]$ ls -la total 4 drwx------. 10 unclejoe mygroup 190 Jan 24 01:42 . drwx------. 14 unclejoe mygroup 4096 Jan 23 16:28 .. drwx------. 4 unclejoe mygroup 46 Jan 24 12:09 MyApp1 drwx------. 5 unclejoe mygroup 66 Jan 24 01:42 MyApp2Perforando más:
[unclejoe@myhost MyApp1]$ ls -la total 24 drwx------. 4 unclejoe mygroup 46 Jan 24 12:09 . drwx------. 10 unclejoe mygroup 190 Jan 24 01:42 .. drwx------. 2 unclejoe mygroup 8192 Jan 24 01:42 cz1zui3n.uma drwx------. 2 unclejoe mygroup 8192 Jan 24 12:09 pvwttlkm.z4sPerforando más lejos:
[unclejoe@myhost MyApp1]$ cd cz1zui3n.uma [unclejoe@myhost cz1zui3n.uma]$ ls -l total 30808 -rw-r--r--. 1 unclejoe mygroup 330240 Jan 24 01:42 Autofac.dll -rw-r--r--. 1 unclejoe mygroup 16384 Jan 24 01:42 Autofac.Extensions.DependencyInjection.dll -rw-r--r--. 1 unclejoe mygroup 143609 Jan 24 01:42 MyApp1.deps.json -rw-r--r--. 1 unclejoe mygroup 10752 Jan 24 01:42 MyApp1.dll -rw-r--r--. 1 unclejoe mygroup 149 Jan 24 01:42 MyApp1.runtimeconfig.json -rw-r--r--. 1 unclejoe mygroup 27136 Jan 24 01:42 Common.dllEl problema es que no esperamos que estos artefactos (dlls/archivos binarios de aplicaciones) se inserten aquí, ya que consumen mucho espacio con el tiempo, especialmente cuando se crean estos extraños directorios temporales (y nunca se limpian solos). No especificamos ninguna variable de entorno en nuestro código .NET para apuntar a esta ubicación de inicio.
Pregunta:
¡Gracias!
¿Las aplicaciones se publican como aplicaciones de archivo único? Si es así, la documentación tiene algunos consejos.
Mirando el hecho de que está extrayendo bibliotecas de terceros, supongo que esto puede ser relevante:
Anteriormente, en .NET Core 3.0, cuando un usuario ejecuta su aplicación de un solo archivo, el host de .NET Core primero extrae todos los archivos a un directorio antes de ejecutar la aplicación. .NET 5 mejora esta experiencia al ejecutar directamente el código sin necesidad de extraer los archivos de la aplicación.
Y esto explica la ubicación:
Si se utiliza la extracción, los archivos se extraen al disco antes de que se inicie la aplicación:
- Si la variable de entorno DOTNET_BUNDLE_EXTRACT_BASE_DIR se establece en una ruta, los archivos se extraerán a un directorio bajo esa ruta.
- De lo contrario, si se ejecuta en Linux o MacOS, los archivos se extraerán a un directorio en $HOME/.net.
- Si se ejecuta en Windows, los archivos se extraerán a un directorio bajo %TEMP%/.net.