Compartiendo de la publicación de Rick Strahl: ¿Qué descarga en tiempo de ejecución de .NET Core necesita?
Solo se requiere .NET Core Runtime para ejecutar una aplicación y proporciona información sobre la instalación.
Para desarrollar, crear y publicar una aplicación se requiere un SDK.
dotnet.exe
se instala con una instalación en tiempo de ejecución, pero solo proporciona funciones básicas para proporcionar información para ejecutar una aplicación y proporcionar información sobre la instalación: dotnet mydll.dll
y dotnet --info
. Para crear, publicar o hacer cualquier otra cosa, necesita instalar el SDK.
La ejecución del siguiente comando proporcionará información sobre la instalación:
dotnet --info
Si el comando falla, significa que no tiene el tiempo de ejecución de .NET Core instalado o disponible en la RUTA del sistema.
A continuación se muestra una salida de muestra del comando.
$ dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.2.101
Commit: 236713b0b7
Runtime Environment:
OS Name: Mac OS X
OS Version: 10.13
OS Platform: Darwin
RID: osx.10.13-x64
Base Path: /usr/local/share/dotnet/sdk/2.2.101/
Host (useful for support):
Version: 2.2.0
Commit: 1249f08fed
.NET Core SDKs installed:
2.1.4 [/usr/local/share/dotnet/sdk]
2.1.302 [/usr/local/share/dotnet/sdk]
2.2.101 [/usr/local/share/dotnet/sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
La salida te dice:
- La versión de SDK instalada
- La versión de tiempo de ejecución activa que ejecuta este comando dotnet
- Una lista de todos los tiempos de ejecución y SDK instalados
La instalación de un SDK también instala el tiempo de ejecución.
específico de homebrew de macOS
La instalación de homebrew-cask dotnet entrará en conflicto con dotnet-sdk , por lo que para obtener tanto el tiempo de ejecución como el sdk, instale dotnet-sdk
brew cask install dotnet-sdk
En resumen, el tiempo de ejecución permitirá que su sistema operativo ejecute programas compilados en C-Sharp , C # , y el sdk le permitirá compilar programas escritos en C-Sharp , C # .
Es importante comprender que puede tener varios tiempos de ejecución y varios SDK instalados y que cada proyecto puede usar uno diferente. El tiempo de ejecución está determinado por el especificador de tiempo de ejecución de su proyecto en el .csproj
archivo:
<TargetFramework>netcoreapp2.1</TargetFramework>
El SDK es el último SDK instalado globalmente, que es el predeterminado, o puede anular explícitamente el SDK en un archivo global.json ubicado en la carpeta raíz de la solución. Lo siguiente obliga explícitamente a mi proyecto a usar el último RC SDK, en lugar de la versión RTM:
{
"sdk": {
"version": "2.1.300-rc.31211"
}
}
En general, no debería ser necesario utilizar una versión de SDK inferior específica, ya que el SDK es compatible con versiones anteriores y puede compilar varias versiones de la aplicación .NET Core a la v1.0. IOW, está bien usar el último SDK en casi todos los casos.
Tiempos de ejecución de .NET Core
Los tiempos de ejecución de .NET Core son el componente autónomo y específico más pequeño y contienen el mínimo absoluto para ejecutar solo .NET Core en una plataforma específica.
Tenga en cuenta que una instalación en tiempo de ejecución no incluye las dependencias en tiempo de ejecución del metapaquete de ASP.NET Core, por lo que si su aplicación hace referencia a Microsoft.AspNetCore.App o Microsoft.AspNetCore.Todo, debe descargar el paquete ASP.NET Core por separado. Sin embargo, si hace referencia explícitamente a todos los paquetes ASP.NET Core Nuget en lugar de usar los metapaquetes, esos paquetes se implementan como parte de su aplicación y se pueden ejecutar solo con el tiempo de ejecución.
Básicamente, está intercambiando el tamaño del paquete de instalación frente a un requisito de preinstalación en tiempo de ejecución.
Referencias: