standard net framework sdk .net-core runtime

sdk - standard - net framework



¿Cuál es la diferencia entre SDK y Runtime en.NET Core? (9)

Compartir desde la publicación de Rick Strahl: ¿Qué descarga de .NET Core Runtime necesitas?

Solo se requiere .NET Core Runtime para ejecutar una aplicación y proporciona información sobre la instalación.

Para desarrollar, compilar y publicar una aplicación se requerirá un SDK.

dotnet.exe instala con una instalación en tiempo de ejecución, pero solo proporciona características principales para proporcionar información para ejecutar una aplicación y proporcionar información sobre la instalación: dotnet mydll.dll y dotnet --info . Para compilar, publicar o hacer cualquier otra cosa, necesita instalar el SDK.

Ejecutar el siguiente comando proporcionará información sobre la instalación:

dotnet --info

Si el comando falla, significa que no tiene .NET Core runtime 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 instalada del SDK
  • 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

Instalar un SDK también instala el tiempo de ejecución.

MacOS homebrew específico

Instalar homebrew-cask dotnet entrará en conflicto con dotnet-sdk , por lo tanto, para obtener el tiempo de ejecución y el sdk, instale dotnet-sdk

brew cask install dotnet-sdk

En resumen, el tiempo de ejecución permitirá que su sistema operativo ejecute programas C-Sharp , C # compilados, y el SDK le permitirá compilar programas escritos en C-Sharp , C # .

Es importante comprender que puede tener múltiples tiempos de ejecución y múltiples 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 archivo .csproj :

<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 haber necesidad de usar 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.

.NET Core Runtimes

Los .NET Core Runtimes 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 de tiempo de ejecución del metapaquete ASP.NET Core, por lo que si su aplicación hace referencia a Microsoft.AspNetCore.App o Microsoft.AspNetCore.Todo tiene que descargar por separado el paquete ASP.NET Core. Sin embargo, si hace referencia explícita a todos los paquetes de ASP.NET Core Nuget en lugar de utilizar los metapaquetes, esos paquetes se implementan como parte de su aplicación y pueden ejecutarse solo con el tiempo de ejecución.

Esencialmente, está intercambiando el tamaño del paquete de instalación frente a un requisito de preinstalación en tiempo de ejecución.

Referencias

He leído muchos artículos, incluido este , pero aún no puedo entender cuál es la diferencia, y no lo han explicado ni en términos simples ni en absoluto.

¿Alguien puede aclarar cuál es la diferencia entre .NET SDK y .NET Runtime?

Actualización: se agradecería mucho el uso de comparaciones. La analogía junto con el inglés simple es altamente educativo.


Cuando instalas SDK también obtienes tiempo de ejecución. Comprueba esto a continuación, esto es lo que se instala cuando instalamos SDK.

Lo siguiente se instaló en C: / Archivos de programa / dotnet • .NET Core SDK 2.2.100 • .NET Core Runtime 2.2.0 • ASP.NET Core Runtime 2.2.0


De acuerdo con la Guía de .Net Core , .NET Core se compone de los siguientes elementos

  • Un tiempo de ejecución .NET, que proporciona un sistema de tipos, carga de ensamblaje, un recolector de basura, interoperabilidad nativa y otros servicios básicos.
  • Un conjunto de bibliotecas marco, que proporcionan tipos de datos primitivos, tipos de composición de aplicaciones y utilidades fundamentales.
  • Un conjunto de herramientas SDK y compiladores de idiomas que permiten la experiencia básica del desarrollador, disponible en .NET Core SDK.
  • El host de la aplicación ''dotnet'', que se utiliza para iniciar aplicaciones .NET Core. Selecciona el tiempo de ejecución y aloja el tiempo de ejecución, proporciona una política de carga de ensamblaje y lanza la aplicación. El mismo host también se usa para lanzar herramientas SDK de la misma manera.

El SDK es todo lo que se necesita / facilita el desarrollo de una aplicación .NET Core, como la CLI y un compilador.

El tiempo de ejecución es la "máquina virtual" que aloja / ejecuta la aplicación y abstrae toda la interacción con el sistema operativo base.

Solo el último es necesario para ejecutar la aplicación, pero el primero es necesario para desarrollar la aplicación.


El SDK es todo lo que se necesita / facilita el desarrollo de una aplicación .NET Core, como la CLI y un compilador.

El tiempo de ejecución es la "máquina virtual" que aloja / ejecuta la aplicación y abstrae toda la interacción con el sistema operativo base.


El SDK generalmente incluye documentación y otros archivos de ayuda. El tiempo de ejecución contiene solo los archivos binarios para la instalación.


No estoy inventando nada aquí. Simplemente copie y pegue las definiciones de https://www.microsoft.com/net/download

El kit de desarrollo de software ( SDK ) incluye todo lo que necesita para compilar y ejecutar aplicaciones .NET Core, utilizando herramientas de línea de comandos y cualquier editor (incluido Visual Studio).

El tiempo de ejecución incluye solo los recursos necesarios para ejecutar las aplicaciones .NET Core existentes. El tiempo de ejecución está incluido en el SDK.


agregando a la respuesta de stormwild en caso de que solo tenga instalado .Net Core Runtime, recibirá la siguiente salida de dotnet --info

>PS C:/Users/Administrator> dotnet --info > >Host (useful for support): > Version: 2.2.3 > Commit: 6b8ad509b6 > >.NET Core SDKs installed: > No SDKs were found. > >.NET Core runtimes installed: > Microsoft.NETCore.App 2.2.3 [C:/Program >Files/dotnet/shared/Microsoft.NETCore.App]


Como resumen: si instala SDK, tendrá todo lo que necesita para desarrollar y ejecutar la aplicación.


Tiempo de ejecución : para ejecutar aplicaciones

SDK (Runtime + Tooling) : para compilar y ejecutar aplicaciones