Обновление приложения 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.
Назовите проект AspNetMvcTest. Настройте проект для использования .NET Framework 4.6.1.
В следующем диалоговом окне выберите приложение MVC, а затем нажмите кнопку Создать.
Ознакомьтесь с созданным проектом и его файлами, в особенности с файлами проекта.
Запуск upgrade-assistant
Откройте терминал и перейдите в папку, в которой находится целевой проект или решение. Выполните команду upgrade-assistant
, передав имя целевого проекта (можно выполнить команду из любого места, если путь к файлу проекта является допустимым).
upgrade-assistant upgrade .\AspNetMvcTest.csproj
Средство запустится и отобразит список действий, которые оно будет выполнять.
По мере завершения каждого шага средство предоставляет набор команд, позволяющих пользователю применить или пропустить следующий шаг, просмотреть дополнительные сведения, настроить ведение журнала или выйти из процесса. Если средство обнаруживает, что на шаге не действия не выполняются, оно автоматически пропускает такой шаг и переходит к следующему, пока действия не начнут выполняться. Нажатие клавиши ВВОД приведет к выполнению следующего шага, если не были выбраны другие действия.
В этом примере каждый раз выбирается шаг "применить". Первым шагом является резервное копирование проекта.
Помощник просит указать путь для резервной копии или использует значение по умолчанию, которое размещает резервную копию проекта в той же папке с расширением .backup
. На следующем шаге происходит преобразование файла проекта в стиль пакета SDK.
После изменения формата проекта следующим шагом является обновление TFM проекта.
Затем средство обновляет пакеты NuGet проекта. В обновлении нуждаются несколько пакетов, поэтому добавляется новый пакет анализатора.
После обновления пакетов следующим шагом будет добавление файлов шаблонов (если они есть). Помощник определил, что необходимо добавить четыре ожидаемых элемента шаблона, и затем добавляет их. Ниже перечислены файлы шаблона:
Program.cs
Startup.cs
appsettings.json
appsettings.Development.json
Эти файлы используются ASP.NET Core для запуска приложения и настройки.
Затем средство переносит файлы конфигурации. Помощник определяет параметры приложения и отключает неподдерживаемые разделы конфигурации, а затем переносит значения конфигурации appSettings
.
В завершение переноса файлов конфигурации выполняется миграция system.web.webPages.razor/pages/namespaces
.
Помощник применяет известные исправления для замены ссылок C# на новые аналоги.
Так как это последний проект, следующий шаг, "переход к следующему проекту", выводит запрос на завершение процесса переноса всего решения.
После завершения этого процесса откройте файл проекта и проверьте его. Ищите статические файлы, подобные следующим:
<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 этого средства содержатся дополнительные советы по устранению неполадок и известные проблемы.