Обновление приложения ASP.NET MVC до .NET 6 с помощью помощника по обновлению .NET

Помощник по обновлению .NET — это средство командной строки, которое может помочь при обновлении приложений ASP.NET MVC до .NET 6. В этой статье приводится следующее:

  • Демонстрация запуска средства для приложения ASP.NET MVC
  • Советы по устранению неполадок

Обновление приложений .NET Framework ASP.NET MVC

В этом разделе демонстрируется запуск помощника по обновлению .NET для вновь созданного приложения ASP.NET MVC, предназначенного для платформы .NET Framework 4.6.1. Дополнительные сведения об установке этого средства см. в разделе Обзор помощника по обновлению .NET.

Начальная настройка для демонстрации

Если вы используете помощник по обновлению .NET для собственного приложения .NET Framework, этот шаг можно пропустить. Если вы просто хотите посмотреть, как это работает, на данном шаге показано, как настроить пример проекта ASP.NET MVC и веб-API (.NET Framework).

С помощью Visual Studio создайте новый проект веб-приложения ASP.NET с использованием .NET Framework.

New ASP.NET Web Application project in Visual Studio

Назовите проект AspNetMvcTest. Настройте проект для использования .NET Framework 4.6.1.

Configure ASP.NET project in Visual Studio

В следующем диалоговом окне выберите приложение MVC, а затем нажмите кнопку Создать.

Create an ASP.NET MVC project in Visual Studio

Ознакомьтесь с созданным проектом и его файлами, в особенности с файлами проекта.

Запуск upgrade-assistant

Откройте терминал и перейдите в папку, в которой находится целевой проект или решение. Выполните команду upgrade-assistant, передав имя целевого проекта (можно выполнить команду из любого места, если путь к файлу проекта является допустимым).

upgrade-assistant upgrade .\AspNetMvcTest.csproj

Средство запустится и отобразит список действий, которые оно будет выполнять.

.NET Upgrade Assistant initial screen

По мере завершения каждого шага средство предоставляет набор команд, позволяющих пользователю применить или пропустить следующий шаг, просмотреть дополнительные сведения, настроить ведение журнала или выйти из процесса. Если средство обнаруживает, что на шаге не действия не выполняются, оно автоматически пропускает такой шаг и переходит к следующему, пока действия не начнут выполняться. Нажатие клавиши ВВОД приведет к выполнению следующего шага, если не были выбраны другие действия.

В этом примере каждый раз выбирается шаг "применить". Первым шагом является резервное копирование проекта.

.NET Upgrade Assistant back up project

Помощник просит указать путь для резервной копии или использует значение по умолчанию, которое размещает резервную копию проекта в той же папке с расширением .backup. На следующем шаге происходит преобразование файла проекта в стиль пакета SDK.

.NET Upgrade Assistant convert project to SDK style

После изменения формата проекта следующим шагом является обновление TFM проекта.

.NET Upgrade Assistant update TFM

Затем средство обновляет пакеты NuGet проекта. В обновлении нуждаются несколько пакетов, поэтому добавляется новый пакет анализатора.

.NET Upgrade Assistant update NuGet packages

После обновления пакетов следующим шагом будет добавление файлов шаблонов (если они есть). Помощник определил, что необходимо добавить четыре ожидаемых элемента шаблона, и затем добавляет их. Ниже перечислены файлы шаблона:

  • Program.cs
  • Startup.cs
  • appsettings.json
  • appsettings.Development.json

Эти файлы используются ASP.NET Core для запуска приложения и настройки.

.NET Upgrade Assistant add template files

Затем средство переносит файлы конфигурации. Помощник определяет параметры приложения и отключает неподдерживаемые разделы конфигурации, а затем переносит значения конфигурации appSettings.

.NET Upgrade Assistant migrate config

В завершение переноса файлов конфигурации выполняется миграция system.web.webPages.razor/pages/namespaces.

.NET Upgrade Assistant migrate config completed

Помощник применяет известные исправления для замены ссылок C# на новые аналоги.

.NET Upgrade Assistant update C# source

Так как это последний проект, следующий шаг, "переход к следующему проекту", выводит запрос на завершение процесса переноса всего решения.

.NET Upgrade Assistant completing the solution

После завершения этого процесса откройте файл проекта и проверьте его. Ищите статические файлы, подобные следующим:

  <ItemGroup>
    <Content Include="fonts\glyphicons-halflings-regular.woff2" />
    <Content Include="fonts\glyphicons-halflings-regular.woff" />
    <Content Include="fonts\glyphicons-halflings-regular.ttf" />
    <Content Include="fonts\glyphicons-halflings-regular.eot" />
    <Content Include="Content\bootstrap.min.css.map" />
    <Content Include="Content\bootstrap.css.map" />
    <Content Include="Content\bootstrap-theme.min.css.map" />
    <Content Include="Content\bootstrap-theme.css.map" />
    <Content Include="Scripts\jquery-3.4.1.slim.min.map" />
    <Content Include="Scripts\jquery-3.4.1.min.map" />
  </ItemGroup>

Статические файлы, которые должны обслуживаться веб-сервером, должны быть перемещены в соответствующую папку в папке корневого уровня с именем wwwroot. Дополнительные сведения см. в разделе Статические файлы в ASP.NET Core. После перемещения файлов можно удалить в файле проекта элементы <Content>, соответствующие этим файлам. Фактически все элементы <Content> и содержащиеся в них группы можно удалить. Кроме того, необходимо удалить все ссылки <PackageReference> на клиентские библиотеки, такие как bootstrap или jQuery.

По умолчанию проект будет преобразован в вид библиотеки классов. Измените атрибут первой строки Sdk на Microsoft.NET.Sdk.Web и присвойте свойству <TargetFramework> значение net5.0. Скомпилируйте проект. На этом этапе количество ошибок не должно быть большим. При переносе нового проекта ASP.NET 4.6.1 MVC, оставшиеся ошибки относятся к файлам в папке App_Start:

  • BundleConfig.cs
  • FilterConfig.cs
  • RouteConfig.cs.

Эти файлы и всю папку App_Start можно удалить. Аналогично можно удалить файлы Global.asax и Global.asax.cs.

На этом этапе остались только ошибки, связанные с объединением. Существует несколько способов настройки объединения и минификации в ASP.NET Core. Выберите наиболее подходящий для вашего проекта.

Советы по устранению неполадок

Существует несколько известных проблем, которые могут возникнуть при использовании помощника по обновлению .NET. В некоторых случаях эти проблемы связаны со средством try-convert, которое помощник по обновлению .NET использует для внутренних целей.

В репозитории GitHub этого средства содержатся дополнительные советы по устранению неполадок и известные проблемы.

См. также раздел