As versões do .NET são compatíveis com versões anteriores?

8

Ao longo dos anos, várias versões do .NET foram implantadas em minhas máquinas clientes via WSUS. Agora, parece que em muitas máquinas essas instalações foram mangueiras umas às outras e certas atualizações de segurança do .NET estão falhando.

Eu verifiquei que posso executar a ferramenta de limpeza do .NET para me livrar de todas as instalações do .NET em um cliente e, em seguida, posso enviar o .NET 3.5 pelo WSUS. Isso parece ter resolvido os problemas que estou tendo na máquina em que tentei.

Portanto, a pergunta é: se eu tenho o .NET 3.5, há algum motivo para também ter versões anteriores instaladas?

Boden
fonte

Respostas:

14

Compatibilidade com versões anteriores é um termo ruim para usar. .NET 1.0, 1.1 e 2.0 são suas próprias estruturas que não têm compatibilidade entre si. O .NET 3.0 e 3.5 são superconjuntos da estrutura 2.0, usando a estrutura base do .NET 2.0, com dlls adicionais para fornecer recursos adicionais (o 3.0 incluía itens como WCF e WWF, o 3.5 tinha itens como LINQ). Em termos de requisitos de aplicação:

  • Os aplicativos 1.0 requerem a instalação do .NET 1.0.
  • Os aplicativos 1.1 requerem que o .NET 1.1 esteja instalado.
  • Os aplicativos 2.0 requerem a instalação do .NET 2.0, 3.0 ou 3.5.
  • Os aplicativos 3.0 requerem a instalação do .NET 3.0 ou 3.5.
  • Os aplicativos 3.5 requerem a instalação do .NET 3.5.

Estou bastante certo de que o .NET 4.0 segue o mesmo modelo que o 2.0 - 3.5 (base 2.0 com dlls de recursos adicionais). Portanto, a instalação do .NET 3.5 cobrirá você para aplicativos .NET 2.0 - 3.5. Você precisará instalar o .NET 1.1 se executar qualquer aplicativo 1.1 (o mesmo para aplicativos 1.0).

Evan M.
fonte
4
Tenho certeza .net 4 é um completamente novo CLR que corre lado a lado com as versões anteriores - não é apenas um pacote de expansão como 3 / 3,5 foi
Michael Haren
@ Michael - Ainda não encontrou informações definitivas, mas parece que você está certo. Foi mal.
Evan M.
+1. Resposta incrível. Não sei dizer quantas vezes tive que explicar isso aos nossos engenheiros de suporte.
joeqwerty
2
msdn.microsoft.com/en-us/library/bb822049.aspx é um artigo que confirma o que você afirma acima. E sim, o 4.0 é autônomo, não possui dependências de outras versões.
Larry Smithmier
2

O .NET é retrocompatível em certa medida, mas você precisa comparar as versões da estrutura. O que eles afirmam é que é compatível lado a lado, que é o problema que você enfrenta. Definitivamente, existe uma razão para ter outras versões instaladas. Um aplicativo pode ser gravado para segmentar uma versão específica e, se essa versão não estiver presente em uma máquina, o aplicativo falhará.

squillman
fonte
Foi o que eu pensei. Acho que vou ter que fazer isso máquina por máquina.
Boden
@ Boden: normalmente você pode alternar o aplicativo para atingir uma estrutura diferente, mas requer a modificação de um arquivo app.config ou web.config para o aplicativo. Eu recomendaria altamente isso, no entanto, pois isso poderia introduzir uma série de problemas para o aplicativo e, portanto, quebrá-lo totalmente.
23410 squillman
Você provavelmente obterá uma cobertura muito boa implantando o 3.5 agora e o 4.0 quando for lançado em abril. 3.5 tem o mesmo CLR que 2, então você não precisa fazer 2 e 3.5. Muito poucos aplicativos executam mais a versão 1.1, portanto, você pode deixar isso de fora e incluí-lo apenas nos casos raros em que é necessário.
Michael Haren
-1

Não, o .net não é compatível com versões anteriores. A MS reserva-se o direito de fazer alterações. 2,0 a 3,5 são IIRC, mas isso é mais um "lado da sorte". O concet é que todas as estruturas instaladas são necessárias e um aplicativo tem como alvo a estrutura em que foi compilado - isso permite que a MS limpe novas versões e introduza alterações não compatíveis.

TomTom
fonte