Direcionando várias versões da estrutura .net
-
09-06-2019 - |
Pergunta
Suponha que eu tenha algum código que, em teoria, seria compilado em qualquer versão da estrutura .net.Pense em "Olá, mundo", se quiser.
Porém, se eu realmente compilar o código, obterei um executável que roda em um especial versão.
Existe alguma maneira de organizar as coisas para que o exe compilado seja executado em qualquer versão que encontrar?Suspeito fortemente que a resposta seja não, mas ficaria feliz em provar que estou errado...
Editar:Bem, irei até o pé da nossa escada.Eu não tinha ideia de que estruturas posteriores executariam exe compilados em versões anteriores.Obrigado por todas as respostas!
Solução
Não tenho certeza se isso está correto, mas tentaria compilá-lo para a versão mais baixa, as versões superiores devem ser capazes de executar os exe das versões inferiores.
Outras dicas
Leia a postagem de ScuttGu sobre Suporte multi-direcionamento do VS 2008
Uma das grandes mudanças que estamos fazendo começando com o lançamento do VS 2008 é apoiar o que chamamos de "alvo de vários alvo" - o que significa que o Visual Studio agora suportará a segmentação de várias versões da estrutura .NET, e os desenvolvedores poderão iniciar Aproveitando os novos recursos O Visual Studio fornece sem precisar sempre atualizar seus projetos existentes e implantar aplicativos para usar uma nova versão da biblioteca .NET Framework.
Agora, quando você abre um projeto existente ou cria um novo com o VS 2008, você pode escolher qual versão da estrutura .NET para trabalhar - e o IDE atualizará seus compiladores e o conjunto de recursos para corresponder a isso.Entre outras coisas, isso significa que os recursos, controles, projetos, plantas de item e referências de montagem que não funcionam com essa versão da estrutura estarão ocultas e, quando você criar seu aplicativo, poderá tomar o compilado compilado Saia e copie -o para uma máquina que possua apenas uma versão mais antiga da estrutura .NET instalada, e você saberá que o aplicativo funcionará.
Dessa forma, você pode usar o VS2008 para desenvolver projetos .NET 2.0 que funcionarão em .NET 2.0, 3.0 e 3.5
Juntamente com a segmentação múltipla, as estruturas são compatíveis com versões anteriores, portanto, algo compilado para 1.0 será executado em 1.1 e 2.Algo compilado em 1.1 será executado em 2 ...etc.
Eu sei @John Boker está correto quando se trata de bibliotecas de classes .Net.Você pode compilar uma biblioteca de classes em .Net 1.1 e usá-la em um projeto .Net 2.0 ou superior.
Suspeito que o mesmo também se aplica aos executáveis.
com 2005 e 2008, sim (no CLR 2.0)
Com 2003, não..porque ele compila até CLR 1.1
Você poderia, teoricamente, escrever algum código usando #if (DOTNET35) e outros para não usar recursos fora do conhecimento dos compiladores e, em seguida, executar o compilador desejado no aplicativo ...Eu questiono a utilidade disso.
Bem, AFAIK, todas as versões do .NET (exceto a versão 1.x) são compiladas no mesmo bytecode.No caso do C#, todos os novos recursos são simplesmente açúcar sintático, que são transformados em construções do C# 2.0 durante a compilação.O ponto principal onde as coisas podem dar errado é quando você usa DLLs específicas do C# 3.0 ou 3.5.Eles não funcionam bem com a estrutura .NET 2.0, então você não pode usá-los.
Eu realmente não consigo pensar em uma solução alternativa para isso, desculpe :(
Sobre qual framework .NET o usuário instalou, há também uma nova opção com o Perfil do Cliente que está disponível no .NET 3.5 SP1.Isso basicamente permite que você envie um pequeno programa de inicialização (277k) que baixa e instala os arquivos necessários (um subconjunto da estrutura .NET completa).
Para obter mais informações e dicas gerais sobre como criar uma pequena instalação .NET, consulte este excelente entrada do blog por Scott Hanselman.