Cambios de comportamiento de API relacionados con ensamblados para el formato de publicación de un solo archivo
Varias API relacionadas con la ubicación de archivos de un ensamblado tienen cambios de comportamiento cuando se invocan en un formato de publicación de un solo archivo.
Descripción del cambio
En la publicación de un solo archivo para .NET 5 y versiones posteriores, los ensamblados empaquetados se cargan desde la memoria en lugar de extraerse en el disco. En el caso de las aplicaciones publicadas de un solo archivo, esto significa que ciertas API relacionadas con la ubicación devuelven valores diferentes en .NET 5 y versiones posteriores que en versiones anteriores de .NET. Los cambios son los siguientes:
API | Versiones anteriores | .NET 5 y versiones posteriores |
---|---|---|
Assembly.Location | Devuelve la ruta de acceso del archivo DLL extraído | Devuelve una cadena vacía para los ensamblados agrupados |
Assembly.CodeBase | Devuelve la ruta de acceso del archivo DLL extraído | Inicia una excepción para los ensamblados agrupados |
Assembly.GetFile(String) | Devuelve null para los ensamblados agrupados |
Inicia una excepción para los ensamblados agrupados |
Environment.GetCommandLineArgs()[0] |
El valor es el nombre del punto de entrada del archivo DLL | El valor es el nombre del archivo ejecutable del host |
AppContext.BaseDirectory | El valor es el directorio de extracción temporal | El valor es el directorio contenedor del archivo ejecutable del host |
Versión introducida
5.0
Acción recomendada
Evite las dependencias de la ubicación de archivo de los ensamblados al publicarlos como un solo archivo.