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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top