![]()  | 
    
     Neste artigo veremos como podemos atender múltiplos frameworks em uma aplicação .NET Core.  | 
  
A criação de uma aplicação .NET Core que atenda a vários frameworks é uma das abordagens para o compartilhamento de código.(share code)
Podemos criar uma aplicação .NET Core e configurar vários frameworks de destino para que ela possa ser executada com todas os frameworks de destino configurados.
Para demonstrar isso, vamos criar o aplicativo console .NET Core 3.0 , que pode ser executado com o .NET Core, bem como com o framework .NET tradicional no Visual Studio 2019.
Vamos começar criando um novo projeto no Visual Studio 2019 abrindo a janela Start Window (ou clique em File-> New Project):
![]()  | 
	
Clique em - Create a new project;
A seguir na próxima janela selecione :
![]()  | 
	
Selecione o tipo de projeto : Console App (.NET Core) e clique em Next;
Informe o nome do projeto : NetCore_MultiplosFrameworks
Selecione a localização em Location e marque a opção : Place Solution and project in the same directory
Clique em Create para criar o projeto.
![]()  | 
	
Veremos o projeto console criado. Vamos editar o arquivo de projeto .csproj.
Clique com o botão direito sobre o projeto e selecione : Edit NetCore_MultiplosFrameworks
![]()  | 
	
Observando vemos que o nosso projeto Console foi criado usando a versão 2.2 do .NET Core (eu ainda não instalei o .NET Core 3.0 SDK preview):
![]()  | 
	
Como você pode ver acima, o framework alvo (<TargetFramework>) é netcoreapp2.2.
Isso significa 
que atualmente este aplicativo pode ser executado no .NET 
Core 2.2. Podemos incluir vários frameworks aqui, para atender vários 
frameworks.
Para atender várias frameworks, vamos alterar  <TargetFramework>
para o plural <TargetFrameworks> e 
incluir informação para atingir frameworks diferentes que desejamos atender 
separados por ; .
Nesta alteração, vamos dar suporte a mais dois frameworks :
Na tabela abaixo temos uma lista de símbolos para alguns dos frameworks do .NET Core:
		
  | 
	
Portanto, inclua os identificadores: net45 e net46, respectivamente, conforme mostrado abaixo.
![]()  | 
	
Assim que você salvar o arquivo .csproj acima, o Visual Studio carregará e incluirá as referências para .NET 4.5 e .NET 4.6 na seção Dependencies.
Você vai notar na base da janela a mensagem : Restoring packages for... , indicando que os pacotes estão sendo restaurados:
![]()  | 
	
Abriando a Solution Explorer e expiando a seção Dependencies vemos as referências incluidas conforme abaixo:
![]()  | 
	
Agora, podemos abrir o arquivo Program.cs e incluir um código específico de framework usando as condições de pré-processador #if e #elif como mostrado abaixo.

No código 
acima, definimos o código  uasndo as diretivas de processamento 
condicionais, que fornecem uma maneira de incluir ou excluir regiões de código a 
partir da compilação, 
para realizar o processamento executando o aplicativo 
para um framework específico: 4.5 , 4.6 ou .NET Core 2.2.
Para executar o aplicativo para um framework específico, clique na lista 
suspensa de execução e selecione um framework de destino como mostrado abaixo.
![]()  | 
	
Selecionando net46 e executando iremos obter:
![]()  | 
	
Referenciando Frameworks Específicos
Às vezes, você pode precisar incluir referências específicas para um framework específico.
Por exemplo, o pacote do .NET Core 2.2 já inclui as referências para System.Net e System.Threading.Tasks, que não está incluída no .NET 4.5. Portanto, precisamos incluí-lo no arquivo .csproj usando a referência condicional, conforme mostrado abaixo.
![]()  | 
	
Agora, as referências System.Net e System.Threading.Tasks serão adicionadas ao .NET 4.5 e o código específico do dessas referências serão executados para todas os frameworks.
E estamos conversados...
						"Palavra fiel é 
						esta: que, se morrermos com ele, também com ele 
						viveremos;
						Se sofrermos, também com ele reinaremos; se o negarmos, 
						também ele nos negará;
						Se formos infiéis, ele permanece fiel; não pode negar-se 
						a si mesmo."
						2 Timóteo 2:11-13
 
| 
    
    Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! 
 Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?  | 
  
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
NET Core - Padrão Repositório - Macoratti
Conceitos - .NET Framework versus .NET Core - Macoratti
NET Core ou .NET Framework - Macoratti
NET Core 3.0 e Visual Studio 2019 - Macoratti