sdk - world - version.net core




Qual é a diferença entre o SDK e o Runtime no.NET Core? (6)

Eu li muitos artigos, incluindo este , mas ainda não consigo descobrir qual é a diferença, e eles não explicaram nem em termos simples ou em tudo.

Alguém pode esclarecer qual é a diferença entre o .NET SDK e o .NET Runtime?

Atualização: Usando comparações seria muito apreciada. Analogia ao lado do inglês simples é altamente educacional.


Compartilhando da postagem de Rick Strahl: Qual .NET Core Runtime Download você precisa?

Apenas o .NET Core Runtime é necessário para executar um aplicativo e fornece informações sobre a instalação.

Para desenvolver, criar e publicar um aplicativo, será necessário um SDK.

dotnet.exe instalado com uma instalação em tempo de execução, mas ele fornece apenas recursos principais para fornecer informações para executar um aplicativo e fornecer informações sobre a instalação: dotnet mydll.dll e dotnet --info . Para criar, publicar ou fazer qualquer outra coisa, você precisa instalar o SDK.

A execução do seguinte comando fornecerá informações sobre a instalação:

dotnet --info

Se o comando falhar, significa que você não tem o tempo de execução do .NET Core instalado ou disponível no PATH do sistema.

Abaixo está uma amostra de saída do 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

A saída informa:

  • A versão do SDK instalada
  • A versão de tempo de execução ativa que está executando este comando dotnet
  • Uma lista de todos os tempos de execução e SDKs instalados

Instalar um SDK também instala o tempo de execução.

Especificação de homebrew de macOS

Instalando o dotnet homebrew-cask vai entrar em conflito com o dotnet-sdk , de modo a obter tanto o tempo de execução, e instalar o sdk dotnet-sdk

brew cask install dotnet-sdk

Em suma, o tempo de execução permitirá que o seu sistema operacional execute C-Sharp compilado, programas C # , e o SDK permitirá que você compile programas escritos em C-Sharp , C # .

É importante entender que você pode ter vários tempos de execução e vários SDKs instalados e cada projeto pode usar um diferente. O tempo de execução é determinado pelo especificador de tempo de execução do seu projeto no arquivo .csproj :

<TargetFramework>netcoreapp2.1</TargetFramework>

O SDK é o último SDK instalado globalmente, que é o padrão, ou você pode substituir explicitamente o SDK em um global.json colocado na pasta raiz da solução. O seguinte força explicitamente meu projeto a usar o último RC SDK, em vez da versão RTM:

{
 "sdk": {
   "version": "2.1.300-rc.31211"
 }
}

Geralmente, não há necessidade de usar uma versão SDK inferior específica, pois o SDK é compatível com versões anteriores e pode compilar várias versões do .NET Core aplicatino de volta à v1.0. IOW, não há problema em usar o SDK mais recente em quase todos os casos.

Tempos de execução do núcleo do .NET

O .NET Core Runtimes é o menor componente autônomo e específico e contém o mínimo absoluto para executar apenas o .NET Core em uma plataforma específica.

Observe que uma instalação em tempo de execução não inclui as dependências de tempo de execução do pacote meta do ASP.NET Core, portanto, se seu aplicativo faz referência a Microsoft.AspNetCore.App ou Microsoft.AspNetCore.All, você deve baixar separadamente o pacote ASP.NET Core. No entanto, se você fizer referência explícita a todos os pacotes ASP.NET Core Nuget em vez de usar os pacotes meta, esses pacotes serão implantados como parte do seu aplicativo e poderão ser executados apenas com o tempo de execução.

Essencialmente, você está negociando o tamanho do pacote de instalação versus um requisito de pré-instalação de tempo de execução.

Referências:


De acordo com o .Net Core Guide , o .NET Core é composto pelos seguintes itens

  • Um tempo de execução do .NET, que fornece um sistema de tipos, carregamento de montagem, um coletor de lixo, interoperabilidade nativa e outros serviços básicos.
  • Um conjunto de bibliotecas de estruturas, que fornece tipos de dados primitivos, tipos de composição de aplicativos e utilitários fundamentais.
  • Um conjunto de ferramentas SDK e compiladores de idiomas que permitem a experiência básica do desenvolvedor, disponível no .NET Core SDK.
  • O host do aplicativo 'dotnet', que é usado para iniciar aplicativos .NET Core. Ele seleciona o tempo de execução e hospeda o tempo de execução, fornece uma política de carregamento de montagem e inicia o aplicativo. O mesmo host também é usado para iniciar as ferramentas do SDK da mesma maneira.

O SDK é todo o material necessário / torna o desenvolvimento de uma aplicação .NET Core mais fácil, como o CLI e um compilador.

O tempo de execução é a "máquina virtual" que hospeda / executa o aplicativo e abstrai toda a interação com o sistema operacional de base.

Apenas o último é necessário para executar o aplicativo, mas o primeiro é necessário para desenvolver o aplicativo.


O SDK é todo o material necessário / torna o desenvolvimento de uma aplicação .NET Core mais fácil, como o CLI e um compilador.

O tempo de execução é a "máquina virtual" que hospeda / executa o aplicativo e abstrai toda a interação com o sistema operacional de base.


O SDK geralmente inclui documentação e outros arquivos de ajuda. O tempo de execução contém apenas os arquivos binários para a instalação.


adicionando a resposta da stormwild caso você tenha apenas o .Net Core Runtime instalado, você receberá a seguinte saída do 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 resumo: se você instalar o SDK, terá tudo o que precisa para desenvolver e executar o aplicativo.