Como remover o SDK e o runtime do .NET

Ao longo do tempo, ao instalar as versões atualizadas do runtime e do SDK do .NET, convém remover as versões desatualizadas do .NET do computador. A desinstalação de versões mais antigas do runtime pode alterar o runtime escolhido para executar os aplicativos de estrutura compartilhada, conforme detalhado no artigo Seleção da versão do .NET.

Devo remover uma versão?

Os comportamentos de seleção de versão do .NET e a compatibilidade do runtime do .NET entre as atualizações permitem a remoção segura das versões anteriores. As atualizações de runtime do .NET são compatíveis em uma banda de versão principal, como 7.x e 6.x. Além disso, as versões mais recentes do SDK do .NET geralmente mantêm a capacidade de compilar aplicativos destinados a versões anteriores do runtime de um modo compatível.

Em geral, você precisa apenas do SDK mais recente e da versão de patch mais recente dos runtimes necessários para seu aplicativo. As instâncias em que convém manter as versões mais antigas do SDK ou do runtime incluem a manutenção de aplicativos baseados no project.json. A menos que seu aplicativo tenha motivos específicos para runtimes ou SDKs anteriores, você pode remover com segurança as versões mais antigas.

Determinar o que está instalado

A CLI do .NET tem opções que você pode usar para listar as versões do SDK e do runtime que estão instaladas no computador. Use dotnet --list-sdks para ver a lista de SDKs instalados e dotnet --list-runtimes para ver a lista de runtimes. Para obter mais informações, confira Como verificar se o .NET já está instalado.

Desinstalar o .NET

O .NET usa a caixa de diálogo Aplicativos e recursos do Windows para remover versões do runtime e do SDK do .NET. A figura a seguir mostra a caixa de diálogo Recursos e aplicativos. Você pode procurar core ou .net para filtrar e mostrar as versões instaladas do .NET.

Adicionar ou remover programas para remover o .NET

Selecione todas as versões que você quer remover do computador e clique em Desinstalar.

A melhor maneira de desinstalar o .NET é espelhar a ação que você usou para instalar o .NET. As especificações dependem da distribuição do Linux escolhida e do método de instalação.

As versões prévias são instaladas manualmente e também devem ser desinstaladas dessa maneira. Para saber mais, confira a seção Manual ou via script.

Importante

Para instalações do Red Hat, confira a Documentação do produto Red Hat para .NET.

É possível remover os seguintes tipos em instalações do .NET:

Gerenciador de pacotes

Não é necessário desinstalar o SDK do .NET primeiro ao atualizá-lo usando um gerenciador de pacotes, a menos que você esteja atualizando uma versão prévia que foi instalada manualmente. Os comandos update ou refresh do gerenciador de pacotes removerão automaticamente a versão mais antiga após a instalação bem-sucedida de uma versão mais recente. Se você tiver uma versão prévia instalada, desinstale-a.

Se você instalou o .NET usando um gerenciador de pacotes, use esse mesmo gerenciador de pacotes para desinstalar o SDK ou o runtime do .NET. As instalações do .NET dão suporte aos gerenciadores de pacotes mais populares. Confira a documentação do gerenciador de pacotes da sua distribuição para saber qual é a sintaxe exata no seu ambiente:

  • apt-get(8) é usado por sistemas baseados em Debian, incluindo o Ubuntu.
  • O yum(8) é usado no Fedora, CentOS, Oracle Linux e RHEL.
  • zypper(8) é usado no openSUSE e no SLES (SUSE Linux Enterprise System).
  • dnf(8) é usado no Fedora.

Em quase todos os casos, o comando para remover um pacote é remove.

O nome do pacote da instalação do SDK do .NET na maioria dos gerenciadores de pacotes é dotnet-sdk, seguido pelo número de versão. Somente os números de versão principal e secundária são necessários: por exemplo, o SDK do .NET versão 8.0.200 pode ser referenciado como o pacote dotnet-sdk-8.0.

Para computadores que têm apenas o runtime instalado, sem o SDK, o nome do pacote é dotnet-runtime-<version>, para o runtime do .NET, e aspnetcore-runtime-<version>, para a pilha de runtime inteira.

Manual ou via script

Se você instalar o .NET usando o script dotnet-install ou extraindo um tarball, será necessário removê-lo por meio do método manual.

Ao instalar o .NET manualmente, a instalação geralmente ocorre no diretório /usr/share/dotnet/, /usr/lib/dotnet/ ou $HOME/.dotnet. O SDK, o runtime e o host do .NET são instalados em subdiretórios separados. Esses diretórios de "componentes" contêm um diretório para cada versão do .NET. Ao remover os diretórios com versão, você remove essa versão do .NET do sistema. Esses diretórios podem variar dependendo da distribuição do Linux.

É possível usar três comandos para descobrir onde o .NET está instalado: dotnet --list-sdks para SDKs, dotnet --list-runtimes para runtimes e dotnet --info para tudo. Esses comandos não listam o host do .NET. Para determinar quais hosts estão instalados, verifique o diretório /usr/share/dotnet/host/fxr/. A seguinte lista representa os diretórios de uma versão específica do .NET, em que a variável $version representa a versão do .NET:

  • SDK:

    /usr/share/dotnet/sdk/$version/

  • Runtime:

    O runtime é baseado em runtimes de produto específicos do .NET, como Microsoft.AspNetCore.All ou Microsoft.NETCore.App (especificamente, o runtime do .NET). Eles são instalados no diretório /usr/share/dotnet/shared/$product/$version, em que $product é o runtime do produto. Por exemplo, é possível ver os seguintes diretórios:

    /usr/share/dotnet/shared/Microsoft.NETCore.App/$version/
    /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/
    /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
    
  • Host do .NET

    /usr/share/dotnet/host/fxr/$version/

Use o comando rm -rf para remover uma versão do .NET. Por exemplo, para remover o SDK da 6.0.406, execute o seguinte comando:

sudo rm -rf /usr/share/dotnet/sdk/6.0.406

Importante

Os diretórios de versão podem não corresponder à "versão" que está sendo desinstalada. Os runtimes e SDKs individuais que são instalados com uma única versão do .NET podem ter versões diferentes. Por exemplo, você pode ter instalado o Runtime 8 do ASP.NET Core, que instalou o runtime 8.0.2 do ASP.NET Core e o runtime 8.0.8 do .NET. Há diretórios com versão distintos para cada. Para obter mais informações, confira Visão geral de como o .NET faz o controle de versão.

Quando você instala manualmente o .NET, ele geralmente é instalado no diretório /usr/local/share/dotnet/ ou $HOME/.dotnet. O SDK, o runtime e o host .NET são instalados em subdiretórios separados. Esses diretórios de "componentes" contêm um diretório para cada versão do .NET. Ao remover os diretórios com versão, você remove essa versão do .NET do sistema. Esses diretórios podem variar dependendo da sua versão do macOS.

É possível usar três comandos para descobrir onde o .NET está instalado: dotnet --list-sdks para SDKs, dotnet --list-runtimes para runtimes e dotnet --info para tudo. Esses comandos não listam o host do .NET. Para determinar quais hosts estão instalados, verifique o diretório /usr/local/share/dotnet/host/fxr/. A seguinte lista representa os diretórios de uma versão específica do .NET, em que a variável $version representa a versão do .NET:

  • SDK:

    /usr/local/share/dotnet/sdk/$version/

  • Runtime:

    O runtime é baseado em runtimes de produto específicos do .NET, como Microsoft.AspNetCore.All ou Microsoft.NETCore.App (especificamente, o runtime do .NET). Eles são instalados no diretório /usr/local/share/dotnet/shared/$product/$version, em que $product é o runtime do produto. Por exemplo, você pode ver os seguintes diretórios:

    /usr/local/share/dotnet/shared/Microsoft.NETCore.App/$version/dotnet --info
    /usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/$version/
    /usr/local/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
    
  • Host do .NET

    /usr/local/share/dotnet/host/fxr/$version/

Use o comando rm -rf para remover uma versão do .NET. Por exemplo, para remover o SDK da 6.0.406, execute o seguinte comando:

sudo rm -rf /usr/local/share/dotnet/sdk/6.0.406

Importante

Os diretórios de versão podem não corresponder à "versão" que está sendo desinstalada. Os runtimes e SDKs individuais que são instalados com uma única versão do .NET podem ter versões diferentes. Por exemplo, você pode ter instalado o Runtime 8 do ASP.NET Core, que instalou o runtime 8.0.2 do ASP.NET Core e o runtime 8.0.8 do .NET. Há diretórios com versão distintos para cada. Para obter mais informações, confira Visão geral de como o .NET faz o controle de versão.

Importante

Se você estiver usando um Mac baseado em Arm, como um com um chip M1, confira os caminhos de diretório descritos em Instalar o .NET em Macs baseados em Arm.

Ferramenta de Desinstalação do .NET

A Ferramenta de desinstalação do .NET (dotnet-core-uninstall) permite remover SDKs e runtimes do .NET de um sistema. Uma coleção de opções está disponível para especificar quais versões devem ser desinstaladas.

Observação

Atualmente, a Ferramenta de Desinstalação do .NET não dá suporte ao .NET 8+. Para obter mais informações sobre o agendamento de lançamento da ferramenta, consulte GitHub – Roteiro de ferramenta de desinstalação do dotnet.

Dependência do Visual Studio em versões do SDK do .NET

Antes do Visual Studio 2019 versão 16.3, os instaladores do Visual Studio chamavam o instalador do SDK autônomo para o .NET Core versão 2.1 ou 2.2. Como resultado, as versões do SDK aparecem na caixa de diálogo Aplicativos e recursos do Windows. A remoção dos SDKs do .NET que foram instalados pelo Visual Studio usando o instalador autônomo pode interromper o Visual Studio. Se o Visual Studio tiver problemas após a desinstalação dos SDKs, execute Repair nessa versão específica do Visual Studio. A seguinte tabela mostra algumas das dependências do Visual Studio em versões do SDK do .NET Core:

Versão do Visual Studio Versão do SDK do .NET Core
Visual Studio 2019 versão 16.2 SDK do .NET Core 2.2.4xx, 2.1.8xx
Visual Studio 2019 versão 16.1 SDK do .NET Core 2.2.3xx, 2.1.7xx
Visual Studio 2019 versão 16.0 SDK do .NET Core 2.2.2xx, 2.1.6xx
Visual Studio 2017 versão 15.9 SDK do .NET Core 2.2.1xx, 2.1.5xx
Visual Studio 2017 versão 15.8 SDK do .NET Core 2.1.4xx

Do Visual Studio 2019 versão 16.3 em diante, o Visual Studio é responsável pela própria cópia do SDK do .NET. Por esse motivo, você não verá mais essas versões do SDK na caixa de diálogo Aplicativos e recursos.

Remover o diretório de fallback do NuGet

Antes do SDK do .NET Core 3.0, os instaladores do SDK do .NET Core usavam um diretório chamado NuGetFallbackFolder para armazenar um cache dos pacotes do NuGet. Esse cache era usado durante operações como dotnet restore ou dotnet build /t:Restore. O NuGetFallbackFolder estava na pasta sdk em que o .NET era instalado. Por exemplo, eles podem estar em C:\Program Files\dotnet\sdk\NuGetFallbackFolder no Windows e em /usr/local/share/dotnet/sdk/NuGetFallbackFolder no macOS.

É possível remover esse diretório nos seguintes casos:

  • Estiver desenvolvendo usando o SDK do .NET Core 3.0 ou do .NET 5 e versões posteriores.
  • Estiver desenvolvendo usando versões do SDK do .NET Core anteriores à 3.0, mas puder trabalhar online.

Se você deseja remover o diretório de fallback do NuGet, será possível excluí-lo, mas serão necessários privilégios de administrador para isso.

Não é recomendado excluir o diretório dotnet. Isso removeria todas as ferramentas globais já instaladas. Além disso, no Windows:

  • Você interromperia o Visual Studio 2019 versão 16.3 e versões posteriores. Nesse caso, você poderá executar Repair para recuperá-lo.
  • Se houver entradas do SDK do .NET Core na caixa de diálogo Aplicativos e recursos, elas ficarão órfãs.