Entender e atualizar dependênciasUnderstand and update dependencies

Depois de identificar a sequência na qual os projetos individuais do aplicativo devem ser migrados, a próxima etapa é entender as dependências de cada projeto e atualizá-las, se necessário.After identifying the sequence in which the app's individual projects must be migrated, the next step is to understand each project's dependencies and update them if necessary. Para as dependências de plataforma, a melhor maneira de começar é executar o analisador de portabilidade do .net no assembly em questão e, em seguida, examinar os resultados detalhados gerados.For platform dependencies, the best way to start is to run the .NET Portability Analyzer on the assembly in question, and then look at the detailed results that are generated. Você configura a ferramenta para especificar uma ou mais plataformas de destino, como .NET Core 3,1 ou .NET Standard 2,0.You configure the tool to specify one or more target platforms, such as .NET Core 3.1 or .NET Standard 2.0. Os resultados são fornecidos com detalhes para cada plataforma de destino.Results are provided with details for each platform targeted. A Figura 3-4 mostra um exemplo da saída da ferramenta.Figure 3-4 shows an example of the tool's output.

Detalhes do relatório do analisador de portabilidade .NET

Figura 3-4.Figure 3-4. Detalhes do relatório do .NET Portability Analyzer..NET Portability Analyzer report details.

Atualizar dependências da biblioteca de classesUpdate class library dependencies

Aplicativos grandes normalmente envolvem vários projetos, e a maioria dos projetos que não sejam o projeto Web ASP.NET MVC provavelmente são bibliotecas de classes.Large apps typically involve multiple projects, and most projects other than the ASP.NET MVC web project are likely to be class libraries. As bibliotecas de classes tendem a ser a porta mais fácil entre as plataformas .NET, especialmente em comparação com os projetos ASP.NET, que estão entre os mais difíceis (e normalmente precisam ser recriadas).Class libraries tend to be the easiest to port between .NET platforms, especially compared to ASP.NET projects, which are among the most difficult (and typically need to be re-created).

As equipes podem considerar a ferramenta tentar-converter para migrar bibliotecas de classes para o .NET Core.Teams can consider the try-convert tool for migrating class libraries to .NET Core. A ferramenta tentar-converter analisa um arquivo de projeto .NET Framework e tenta migrá-lo para o formato de arquivo de projeto do .NET Core, fazendo quaisquer modificações que possam ser executadas com segurança no processo.The try-convert tool analyzes a .NET Framework project file and attempts to migrate it to the .NET Core project file format, making any modifications it can safely perform in the process. Essa ferramenta não funcionará em um projeto ASP.NET, mas pode ajudar a acelerar o processo de migração de bibliotecas de classes.This tool won't work on an ASP.NET project, but can help speed up the process of migrating class libraries.

A ferramenta tentar-converter é implantada como uma ferramenta de linha de comando do .NET Core.The try-convert tool is deployed as a .NET Core command line tool. Ele só é executado no Windows, já que foi projetado para trabalhar com .NET Framework aplicativos.It only runs on Windows, since it's designed to work with .NET Framework apps. Você pode instalá-lo executando o seguinte comando em um prompt de comando:You can install it by running the following command from a command prompt:

dotnet tool install -g try-convert

Depois de instalar a ferramenta com êxito, você pode executar try-convert na pasta em que o arquivo de projeto da biblioteca de classes está localizado.Once you've successfully installed the tool, you can run try-convert in the folder where the class library's project file is located.

Atualizar dependências do pacote NuGetUpdate NuGet package dependencies

Analise o uso de pacotes NuGet de terceiros e determine se algum deles ainda não oferece suporte a .NET Standard (ou dê suporte a ele, mas apenas com uma nova versão).Analyze your use of third-party NuGet packages and determine if any of them don't yet support .NET Standard (or do support it but only with a new version). Pode ser útil atualizar os pacotes NuGet para usar a <PackageReference> sintaxe usando a ferramenta de conversão do Visual Studio, para que as dependências de nível superior fiquem visíveis.It can be helpful to update NuGet packages to use <PackageReference> syntax using Visual Studio's converter tool, so that top-level dependencies are visible. Em seguida, verifique se as versões atuais ou posteriores desses pacotes dão suporte ao .NET Core ou .NET Standard.Next, check whether the current or later versions of these packages support .NET Core or .NET Standard. Essas informações podem ser encontradas em [nuget.org] ou no Visual Studio para cada pacote.This information can be found on [nuget.org] or within Visual Studio for each package.

Se o suporte existir usando a versão do pacote que o aplicativo usa atualmente, ótimo!If support exists using the version of the package the app currently uses, great! Caso contrário, veja se uma versão mais recente do pacote tem o suporte e a pesquisa o que estaria envolvido na atualização.If not, see if a more recent version of the package has the support and research what would be involved in upgrading. Pode haver alterações significativas no pacote, especialmente se a versão principal do pacote for alterada entre a versão atualmente usada e a que você estiver atualizando.There may be breaking changes in the package, especially if the major version of the package changes between your currently used version and the one to which you're upgrading.

Em alguns casos, nenhuma versão de um determinado pacote funciona com o .NET Core.In some cases, no version of a given package works with .NET Core. Nesse caso, as equipes têm duas opções.In that case, teams have a couple options. Eles podem continuar dependendo da versão do .NET Framework, mas isso tem limitações.They can continue depending on the .NET Framework version, but this has limitations. O aplicativo só será executado no Windows, e a equipe poderá querer executar o analisador de portabilidade nos binários do pacote para ver se há problemas que possam ser encontrados.The app will only run on Windows, and the team may want to run Portability Analyzer on the package's binaries to see if there are any issues likely to be encountered. Certamente, a equipe desejará testar exaustivamente.Certainly the team will want to test thoroughly. A outra opção é localizar um pacote diferente ou, se o pacote necessário for de software livre, atualizá-lo para o .NET Standard ou o próprio .NET Core.The other option is to find a different package or, if the required package is open source, upgrade it to .NET Standard or .NET Core themselves.

Migrar projetos MVC do ASP.NETMigrate ASP.NET MVC projects

O System.Web namespace e os tipos não existem no .NET Core.The System.Web namespace and types don't exist in .NET Core. Quando estiver analisando dependências e usando ferramentas como try-convert , você descobrirá que elas não oferecem muitas sugestões para a migração automática de projetos do ASP.NET MVC e qualquer código que faça referência a ele System.Web .When you're analyzing dependencies and using tools like try-convert, you'll find they don't offer many suggestions for automatic migration of ASP.NET MVC projects and any code in them that references System.Web. Para esses projetos, você precisará começar com um novo projeto Web ASP.NET Core e migrar os arquivos manualmente para este projeto.For these projects, you'll need to start with a new ASP.NET Core web project and manually migrate files to this project.

Em geral, é uma boa prática minimizar o quanto da lógica de negócios de um aplicativo reside em sua camada de interface do usuário.In general, it's a good practice to minimize how much of an app's business logic lives in its user interface layer. Também é melhor manter os controladores e as exibições pequenas.It's also best to keep controllers and views small. Os aplicativos que seguiram essas diretrizes serão mais fáceis de porta do que aqueles que têm uma quantidade significativa de lógica no projeto Web ASP.NET.Apps that have followed this guidance will be easier to port than those that have a significant amount of their logic in the ASP.NET web project. Se você tiver um aplicativo que está considerando portabilidade, mas ainda não tiver iniciado o processo, lembre-se disso ao mantê-lo.If you have an app you're considering porting, but haven't begun the process yet, keep this in mind as you maintain it. Qualquer esforço que você colocar para minimizar a quantidade de código no ASP.NET MVC ou no projeto de API da Web provavelmente resultará em menos trabalho quando o tempo chegar à porta do aplicativo.Any effort you put toward minimizing how much code is in the ASP.NET MVC or Web API project will likely result in less work when the time comes to port the app.

O próximo capítulo se aprofunda em detalhes de como migrar de projetos do ASP.NET MVC e da API Web para projetos ASP.NET Core.The next chapter digs into details of how to migrate from ASP.NET MVC and Web API projects to ASP.NET Core projects. O capítulo anterior chamou as maiores diferenças entre os aplicativos.The previous chapter called out the biggest differences between the apps. Depois que a estrutura básica do projeto estiver em vigor, migrar os controladores e as exibições individuais geralmente é simples, especialmente se elas estiverem concentradas principalmente em responsabilidades da Web.Once the basic project structure is in place, migrating individual controllers and views is usually straightforward, especially if they're mainly focused on web responsibilities.

ReferênciasReferences