Visão geral da porting de .NET Framework para .NET
Artigo
Este artigo fornece uma visão geral do que deve considerar ao passar o seu código de .NET Framework para .NET (anteriormente denominado .NET Core). A ingrção para .NET de .NET Framework para muitos projetos é relativamente simples. A complexidade dos seus projetos dita o trabalho que vai fazer após a migração inicial dos ficheiros do projeto.
Os projetos em que o modelo de aplicações está disponível em .NET (como bibliotecas, aplicações para consolas e aplicações de desktop) geralmente requerem pouca mudança. Os projetos que exigem uma nova aplicação modelo, como a mudança para ASP.NET Core de ASP.NET, exigem mais trabalho. Muitos padrões da antiga aplicação modelo têm equivalentes que podem ser usados durante a conversão.
Windows tecnologias de ambiente de trabalho
Muitas aplicações criadas para .NET Framework usar uma tecnologia de ambiente de trabalho como Windows Forms ou Windows Presentation Foundation (WPF). Tanto Windows Forms como wpf foram portadores de .NET, mas estas continuam a ser tecnologias apenas Windows.
Considere as seguintes dependências antes de migrar uma aplicação Windows Forms ou WPF:
Project ficheiros para .NET utilizem um formato diferente do .NET Framework.
O seu projeto poderá utilizar uma API que não esteja disponível em .NET.
Os controlos e bibliotecas de terceiros podem não ter sido portados para .NET e permanecer apenas disponíveis para .NET Framework.
As aplicações ainda podem P/Invocar bibliotecas nativas em plataformas suportadas por .NET. Esta tecnologia não se limita a Windows. No entanto, se a biblioteca a que se refere for Windows específica, como uma user32.dll ou kernel32.dll, então o código só funciona em Windows. Para cada plataforma que pretende que a sua aplicação seja executada, terá de encontrar versões específicas da plataforma ou tornar o seu código genérico o suficiente para ser executado em todas as plataformas.
Ao apresentar uma aplicação de .NET Framework a .NET, a sua aplicação provavelmente utilizou uma biblioteca fornecida com o .NET Framework. Muitas APIs que estavam disponíveis em .NET Framework não foram portadoras de .NET porque dependiam de tecnologia Windows específica, como o Registo Windows ou o GDI+ desenho modelo.
O modo de compatibilidade .NET Framework foi introduzido em .NET Standard 2.0. Este modo de compatibilidade permite que os projetos .NET Standard e .NET 5+ (e .NET Core 3.1) se refiram a bibliotecas .NET Framework apenas Windows. Fazer referência a bibliotecas .NET Framework não funciona para todos os projetos, como se a biblioteca usa APIs Windows Presentation Foundation (WPF), mas desbloqueia muitos cenários de porção. Para obter mais informações, consulte a Análise das suas dependências para código portuário de .NET Framework para .NET.
Tecnologias indisponíveis
Existem algumas tecnologias em .NET Framework que não existem em .NET:
A criação de domínios de aplicação adicionais não é suportada. Para isolamento de códigos, utilize processos ou recipientes separados como alternativa.
O remoting é utilizado para comunicar através dos domínios da aplicação, que já não são suportados. Para uma simples comunicação entre processos, considere os mecanismos de comunicação inter-processa (IPC) como uma alternativa à remoting, como a System.IO.Pipes classe ou a MemoryMappedFile classe. Para cenários mais complexos, considere quadros como o StreamJsonRpc ou ASP.NET Core (utilizando serviços gRPC ou RESTful Web API).
O CAS foi uma técnica de sandboxing suportada por .NET Framework mas depreciada em .NET Framework 4.0. Foi substituído pela Transparência de Segurança e não é suportado em .NET. Em vez disso, utilize limites de segurança fornecidos pelo sistema operativo, tais como virtualização, contentores ou contas de utilizador.
Semelhante ao CAS, esta técnica de sandboxing já não é recomendada para aplicações .NET Framework e não é suportada em .NET. Em vez disso, utilize limites de segurança fornecidos pelo sistema operativo, tais como virtualização, contentores ou contas de utilizador.
.NET (anteriormente conhecido como .NET Core) foi concebido para ser cross-platform. Se o seu código não depender de tecnologias específicas Windows, pode funcionar em outras plataformas como macOS, Linux e Android. Isto inclui tipos de projetos como:
Bibliotecas
Ferramentas baseadas em consolas
Automatização
ASP.NET sites
.NET Framework é um componente só de Windows. Quando o seu código utiliza tecnologias específicas Windows ou APIs, como Windows Forms e Windows Presentation Foundation (WPF), o código ainda pode ser executado em .NET, mas não será executado em outros sistemas operativos.
É possível que a sua biblioteca ou aplicação baseada em consolas possa ser usada através de plataformas cruzadas sem alterar muito. Ao passar para .NET, poderá querer ter isso em consideração e testar a sua aplicação noutras plataformas.
O futuro da Norma .NET
.NET Standard é uma especificação formal de .NET APIs que estão disponíveis em múltiplas implementações .NET. A motivação por trás da Norma .NET foi estabelecer uma maior uniformidade no ecossistema .NET. A partir de .NET 5, foi adotada uma abordagem diferente para estabelecer a uniformidade, e esta nova abordagem elimina a necessidade de .NET Standard em muitos cenários. Para mais informações, consulte .NET 5 e .NET Standard.
.NET Standard 2.0 foi a última versão a suportar .NET Framework.
Ferramentas para ajudar a poraragem
Em vez de desembrulhá-lo manualmente de uma aplicação de .NET Framework para .NET, pode utilizar diferentes ferramentas para ajudar a automatizar alguns aspetos da migração. Por ter um projeto complexo é, por si só, um processo complexo. Estas ferramentas podem ajudar nessa viagem.
O .NET Upgrade Assistant é uma ferramenta de linha de comando que pode ser executada em diferentes tipos de aplicações .NET Framework. É projetado para ajudar na atualização de .NET Framework aplicações para .NET 5. Depois de executar a ferramenta, na maioria dos casos a aplicação exigirá mais esforço para completar a migração. A ferramenta inclui a instalação de analisadores que podem ajudar na conclusão da migração. Esta ferramenta funciona nos seguintes tipos de aplicações .NET Framework:
Windows Forms
WPF
ASP.NET MVC
Consola
Bibliotecas de classes
Esta ferramenta utiliza as outras ferramentas listadas neste artigo e orienta o processo de migração. Para obter mais informações sobre a ferramenta, consulte a visão geral do Assistente de Atualização .NET.
tentar converter
A ferramenta try-convert é uma ferramenta global .NET que pode converter um projeto ou solução inteira para o .NET SDK, incluindo aplicações de ambiente de trabalho em movimento para .NET 5. No entanto, esta ferramenta não é recomendada se o seu projeto tiver um processo de construção complicado, como tarefas personalizadas, alvos ou importações.
O .NET Portability Analyzer é uma ferramenta que analisa os conjuntos e fornece um relatório detalhado sobre .NET APIs que faltam para as aplicações ou bibliotecas serem portáteis nas plataformas específicas .NET.
Ao apresentar a sua candidatura a .NET, considere as seguintes sugestões em ordem.
✔️ CONSIDERE utilizar o Assistente de Atualização .NET para migrar os seus projetos. Apesar de esta ferramenta estar em pré-visualização, automatiza a maioria dos passos manuais detalhados neste artigo e dá-lhe um ótimo ponto de partida para continuar o seu caminho de migração.
✔️ Considere examinar as suas dependências primeiro. As suas dependências devem ter como alvo .NET 5, .NET Standard ou .NET Core.
✔️ CONSIDERE atualizar para o mais recente formato de ficheiros do projeto mesmo que ainda não consiga apresentar a sua aplicação. .NET Framework projetos usam um formato de projeto desatualizado. Embora o mais recente formato de projeto, conhecido como projetos ao estilo SDK, tenha sido criado para .NET Core e não só, eles trabalham com .NET Framework. Ter o seu ficheiro de projeto no formato mais recente dá-lhe uma boa base para a sua aplicação no futuro.
✔️ Faça a sua .NET Framework projeto para pelo menos .NET Framework 4.7.2. Isto garante a disponibilidade das mais recentes alternativas API para casos em que a Norma .NET não suporta as APIs existentes.
✔️ CONSIDERE o alvo .NET 5 em vez de .NET Core 3.1. Enquanto .NET Core 3.1 está sob suporte a longo prazo (LTS), .NET 5 é o mais recente e .NET 6 será LTS quando lançado.
✔️ DO alvo .NET 5 para projetos Windows Forms e WPF. .NET 5 contém muitas melhorias para aplicações de desktop.
✔️ CONSIDERE como alvo .NET Standard 2.0 se estiver a migrar uma biblioteca que também pode ser usada com projetos .NET Framework. Também pode multitarefar a sua biblioteca, direcionando-.NET Framework e .NET Standard.
✔️ Adicione referência ao Microsoft.Windows. Pacote NuGet de compatibilidade se, após migração, tiver erros de APIs em falta. Uma grande parte da superfície API .NET Framework está disponível para .NET através do pacote NuGet.
Neste módulo, você aprenderá quando, por que e como modernizar um aplicativo do ASP.NET Framework para ASP.NET Core usando o Assistente de Atualização.