Esta questão não está muito relacionada à programação, mas à implantação.
Pego-me conversando muito com o grupo em minha empresa cujo trabalho é manter nossos servidores Windows de produção e implantar nosso código neles. Por motivos legais e de conformidade, não tenho visibilidade direta ou qualquer controle sobre os servidores, então a única maneira de saber quais versões do .NET estão instaladas em qualquer um deles é por meio de instruções que dou a esse grupo.
Até agora, todos os métodos que posso pensar para dizer quais versões estão instaladas (verifique se há ferramentas administrativas correspondentes a 1.1 ou 2.0, verifique as entradas na lista "Adicionar / remover programas", verifique a existência de diretórios em c: \ Windows \ Microsoft.NET) são falhos (eu vi pelo menos uma máquina com 2.0, mas nenhuma entrada 2.0 em Ferramentas Administrativas - e esse método não diz nada sobre 3.0+, a lista "Adicionar / Remover Programas" pode ficar fora de sincronia com a realidade, e a existência dos diretórios não significa necessariamente nada).
Dado que geralmente preciso saber que essas coisas estão em vigor com antecedência (descobrir que "opa, este não tem todas as versões e service packs de que você precisa" não funciona bem com janelas de manutenção curtas) e eu tenho que faço a verificação "por proxy", já que não consigo acessar os servidores diretamente, qual é a maneira infalível de saber quais versões do .NET estão instaladas em um Windows Server de produção? De preferência, alguma maneira intrínseca de fazer isso usando o que o framework instala, já que será mais rápido e não precisará de algum tipo de utilitário para ser carregado e também um método que definitivamente irá falhar se os frameworks não estiverem instalados corretamente, mas ainda tiverem arquivos no lugar , há um diretório e gacutil.exe está localizado lá, mas essa versão da estrutura não está realmente "instalada")
EDITAR: Na ausência de uma boa maneira intrínseca à prova de falhas para fazer isso embutido no (s) Framework (s), alguém conhece um programa bom, leve e sem instalação necessária que possa descobrir isso? Posso imaginar que alguém poderia escrever um facilmente, mas se já existir, seria ainda melhor.
fonte
Respostas:
Você deve abrir o IE no servidor para o qual está procurando essas informações e ir a este site: http://www.hanselman.com/smallestdotnet/
Isso é tudo o que preciso.
O site tem um script que procura o "UserAgent" do seu navegador e descobre qual versão (se houver) do .NET Framework você instalou (ou não) e o exibe automaticamente (então calcula o tamanho total se você escolher para baixar o .NET Framework).
fonte
Você pode verificar programaticamente o registro e algumas outras coisas de acordo com esta entrada do blog .
A chave de registro a ser examinada é
fonte
Resposta encontrada aqui :
Abra o prompt de comando e copie e cole uma das linhas de comando abaixo
ou
fonte
De acordo com a resposta do CodeTrawler , a solução é inserir o seguinte em uma janela do explorer:
Em seguida, pesquise:
... e clique com o botão direito / vá para a guia de versão de cada resultado.
fonte
O jeito da Microsoft é este:
MSDN: Como determinar Versões Qual .NET Framework estão instaladas (que direciona para a seguinte chave do registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\...
)Se você quer infalível, isso é outra coisa. Eu não me preocuparia com uma xcopy da pasta do framework. Se alguém fizesse isso, eu consideraria o computador quebrado.
A maneira mais infalível seria escrever um pequeno programa que usasse cada versão do .NET e as bibliotecas de seu interesse e executá-las.
Para um método sem instalação, PowerBasic é uma excelente ferramenta. Ele cria pequenos exe's sem tempo de execução necessário. Ele poderia automatizar as verificações descritas no artigo MS KB acima.
fonte
http://www.asoft.be/prod_netver.html
Use este "programa bom, leve e sem necessidade de instalação"
fonte
Se a máquina que você deseja verificar tem o .NET SDK instalado, você pode usar um prompt de comando do SDK e executar o programa
CLRVer.exe
.fonte
A resposta oficial da Microsoft sobre como fazer isso está no artigo 318785 do KB .
fonte
A implantação do OneTouch fará toda a detecção e instalação dos pré-requisitos. Provavelmente, é melhor escolher uma solução predefinida do que tentar criar a sua própria. Tentar fazer o seu próprio pode levar a problemas porque tudo o que você digitar pode mudar com um hotfix ou service pack. Provavelmente a Microsoft tem alguma heurística para determinar qual versão está sendo executada.
fonte
A maneira oficial de detectar .NET 3.0 é descrita aqui
http://msdn.microsoft.com/en-us/library/aa480198.aspx
Falha, porque requer que o chamador tenha permissões de acesso ao registro.
O MSDN também menciona uma técnica para detectar .NET 3.5 verificando a string do Agente do Usuário:
http://msdn.microsoft.com/en-us/library/bb909885.aspx
Acho que a Microsoft deveria ter feito um trabalho melhor do que isso.
fonte
Além disso, consulte a questão Stack Overflow. Como detectar quais versões do .NET Framework e service packs estão instalados? que também menciona:
Artigo: 318785 - Última revisão: quinta-feira, 7 de Novembro de 2008 - Revisão: 20.1 Como determinar quais as versões do .NET Framework instaladas e se os service packs foram aplicados.
Infelizmente, não parece funcionar, porque a
mscorlib.dll
versão no diretório 2.0 tem uma versão 2.0 e não há nenhumamscorlib.dll
versão nos diretórios 3.0 ou 3.5, embora o 3.5 SP1 esteja instalado ... Por que a resposta oficial da Microsoft seria tão mal informado?fonte
Para determinar o suporte do seu servidor para .NET Framework 4.5 e versões posteriores (testado até 4.5.2): Se você não tem acesso ao Registro no servidor , mas tem direitos de publicação de aplicativo para esse servidor, crie um aplicativo MVC 5 com um aplicativo trivial controlador, assim:
Em seguida, em seu Web.config, percorra as versões desejadas do .NET Framework na seção a seguir, alterando os
targetFramework
valores conforme desejado:Publique cada destino em seu servidor e navegue até
<app deploy URL>/Default
. Se o seu servidor suportar a estrutura de destino, a string simples será exibida no seu Controlador trivial. Caso contrário, você receberá um erro como o seguinte:Portanto, neste caso, meu servidor de destino ainda não oferece suporte ao .NET Framework 4.5.2.
fonte
Para obter a versão dotnet instalada,
crie um aplicativo de console. Adicionar esta classe Executar isso
fonte
Estranhamente, escrevi um código para fazer isso quando o 1.1 foi lançado (o que era isso, sete anos atrás?) E o ajustei um pouco quando o 2.0 foi lançado. Não o vejo há anos, pois não gerenciamos mais nossos servidores.
Não é infalível, mas estou postando de qualquer maneira porque acho engraçado; nisso é mais fácil de fazer no .NET e mais fácil ainda no power shell.
fonte
Bem, como Dean disse, você pode olhar o registro e fazer o que ele fez. Para verificar se ele realmente tem o CLR .NET Framework instalado, você deve procurar o
MSCorEE.dll
arquivo no%SystemRoot%\System32
diretório.fonte
Provavelmente é uma forma desagradável de descobrir as versões, mas sempre tive a impressão de que todas as versões eram instaladas
<root>:\WINDOWS\Microsoft.NET\Framework
.Isso fornece pastas com nomes
v2.0.50727
que, acredito, fornecem informações detalhadas sobre a versão.fonte
Se você quiser encontrar versões anteriores ao .NET 4.5, use o código para um aplicativo de console. Como isso:
Caso contrário, você pode encontrar o .NET 4.5 ou posterior consultando desta forma:
Em seguida, o resultado do console dirá quais versões estão instaladas e disponíveis para uso com suas implantações. Esse código também é útil porque você os tem como soluções salvas para quando quiser verificá-lo no futuro.
fonte
Entrei no Windows Update e olhei o histórico de atualização, sabendo que o patch do servidor é mantido atualizado. Procurei por atualizações do .NET e ele me mostrou exatamente quais versões tinham atualizações, o que me permitiu concluir quais versões estavam instaladas.
fonte
Eu achei este muito útil. aqui está a fonte
fonte