Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 50975|Respuesta: 0

[Fuente] .NET Core lanza un problema de ruta de un solo archivo

[Copiar enlace]
Publicado el 28-3-2021 13:56:32 | | | |
Usando .NET Core 3.1 para lanzar una aplicación de consola de un solo archivo, ejecutándose en un sistema Linux, lo principal que hace el código del programa es muy sencillo, es decir,Lee la salida del archivo de configuración en el directorio del programa! Sin embargo, cuando publicas un solo archivo para ejecutarlo en Linux, dice que el archivo no se ha encontrado.

Las nuevas funciones de .NET Core lanzan un ejecutable de un solo archivo
https://www.itsvse.com/thread-8273-1-1.html

Ten cuidado con System.Environment.CurrentDirectory para obtener el directorio actual
https://www.itsvse.com/thread-9464-1-1.html
Código de prueba:

La salida es la siguiente:

AppDomain.CurrentDomain.SetupInformation.ApplicationBase:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Environment.CurrentDirectory:/root/test
AppDomain.CurrentDomain.BaseDirectory:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/


Al publicar una aplicación .NET Core como un solo archivo, ejecutándola en un sistema CentOS, el programa se extrae y se libera a sí mismo/var/tmp/.net/root/y luego llamar al programa publicado en el directorio, lo que también puede explicar por qué el programa no puede encontrar el archivo de configuración.

solución

Usando System.Environment.CurrentDirectory para leer la ruta del programa, System.Environment.CurrentDirectory obtiene efectivamente el directorio actual, pero si el programa A llama al programa B y el programa B usa System.Environment.CurrentDirectory para obtener el directorio. Entonces, el directorio obtenido en el programa B ya no es el directorio donde se encuentra la aplicación B; Se convierte en el directorio donde se encuentra A.





Anterior:Error en .NET Core Linux: No se pude encontrar ningún paquete de ICU válido instalado...
Próximo:Problemas con la marca de agua de .NET Core en imágenes de Linux
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com