tag - ¿Hay algún equivalente de GAC para.NET Core?
tag helpers asp net core (2)
No, no hay, no en la forma en que piensas del GAC. Las aplicaciones principales están diseñadas para estar aisladas unas de otras, por lo que puede parchear una sin temor a afectar a las demás. Usted envía todos los paquetes que necesita con la aplicación.
Hay un directorio de servicios que se puede usar para enviar actualizaciones para los componentes Core, pero es para intercambiarlas por completo, no para habilitar las versiones en paralelo, y solo es para actualizaciones enviadas a través de Microsoft Update.
Como entiendo actualmente en el .NET Framework completo, cuando instalamos el marco en la máquina, implementa todo el BCL en el GAC de la computadora. De esa manera, cuando desarrollemos un software con .NET y lo implementemos en esa computadora, utilizará los ensamblajes BCL que están disponibles en la GAC cuando se instaló .NET Framework.
Ahora, como sé, CoreFX es el equivalente del BCL para el nuevo .NET Core. Sin embargo, la principal diferencia es que podemos especificar en el project.json
exactamente qué partes del CoreFX necesitamos.
Mi pregunta es: cuando implementamos aplicaciones .NET Core, ¿hay algún equivalente de GAC en el entorno de producción? Entonces, cuando implementamos la aplicación que se va a ejecutar, ¿hay alguna ubicación central en la computadora donde se verá la aplicación para ver si el CoreFX completo está disponible?
Editar 2017-09-01
Algo similar al GAC, .NET Core 2.0 introduce el " almacén de paquetes de Runtime ":
A partir de .NET Core 2.0, es posible empaquetar e implementar aplicaciones contra un conjunto conocido de paquetes que existen en el entorno de destino. Los beneficios son implementaciones más rápidas, menor uso del espacio en disco y mejor rendimiento de inicio en algunos casos.
Esta función se implementa como un almacén de paquetes en tiempo de ejecución, que es un directorio en el disco donde se almacenan los paquetes (generalmente en / usr / local / share / dotnet / store en macOS / Linux y C: / Program Files / dotnet / store en Windows) .
Usted está buscando una "implementación dependiente del marco". De los documentos :
Puede crear dos tipos de implementaciones para aplicaciones .NET Core:
Implementación dependiente del marco. Como su nombre lo indica, la implementación dependiente del marco (FDD) se basa en una versión compartida de todo el sistema de .NET Core para estar presente en el sistema de destino. Debido a que .NET Core ya está presente, su aplicación también es portátil entre instalaciones de .NET Core. Su aplicación solo contiene su propio código y las dependencias de terceros que están fuera de las bibliotecas .NET Core. Los FDD contienen archivos .dll que pueden iniciarse usando la utilidad dotnet desde la línea de comandos. Por ejemplo,
dotnet app.dll
ejecuta una aplicación llamadaapp
.Despliegue autónomo. A diferencia de FDD, una implementación autocontenida (SCD) no se basa en ningún componente compartido para estar presente en el sistema de destino. Todos los componentes, incluidas las bibliotecas .NET Core y el tiempo de ejecución de .NET Core, se incluyen con la aplicación y están aislados de otras aplicaciones .NET Core. Los SCD incluyen un ejecutable (como
app.exe
en las plataformas Windows para una aplicación llamadaapp
), que es una versión renombrada del host .NET Core específico de la plataforma, y un archivo .dll (comoapp.dll
), que es la aplicación real.