Модернизация после перехода с .NET Framework на .NET
В этой статье вы узнаете о различных способах модернизации приложения после обновления с .NET Framework до .NET. Используйте средство помощника по обновлению .NET для обновления приложения до .NET.
Отсутствующие API
При обновлении приложения .NET Framework у вас, скорее всего, есть некоторые несовместимости. Это связано с тем, что платформа .NET Framework — это технология, доступная только для Windows, и .NET — это кроссплатформенная технология. Некоторые библиотеки не соответствуют ожиданиям. Например, .NET не предоставляет готовых к использованию API для доступа к реестру Windows, как это делало .NET Framework. Поддержка реестра Windows предоставляется пакетом NuGet Microsoft.Win32.Registry
. Многие библиотеки .NET Framework перенесены в .NET или .NET Standard и размещаются в NuGet. Если в проекте отсутствует ссылка, выполните поиск в NuGet.
Пакет совместимости Windows
Если после миграции есть некоторые зависимости от API .NET Framework, которые не поддерживаются в новой версии .NET, их можно найти в Microsoft.Windows.Compatibility
пакете NuGet. Он добавляет около 20 000 API в проект .NET, значительно увеличив набор API, доступный для вашего проекта. Эти API включают api только для Windows, такие как те, которые связаны с инструментарием управления Windows (WMI) и журналом событий Windows. Дополнительные сведения см. в статье Использование пакета совместимости Windows для переноса кода на .NET.
Элемент управления веб-браузером
Проекты, предназначенные для классической технологии Windows, например Windows Presentation Foundation или Windows Forms, могут включать элемент управления веб-браузером. Предоставленный элемент управления веб-браузера, скорее всего, был разработан до HTML5 и других современных веб-технологий и считается устаревшим. Корпорация Майкрософт публикует Microsoft.Web.WebView2
пакет NuGet как современную замену элемента управления веб-браузером.
App.config
Платформа .NET Framework использует файл App.config для загрузки параметров приложения, таких как строки подключения и конфигурация поставщика журналов. Современный .NET использует файл appsettings.json для параметров приложения. Версия CLI инструмента Upgrade Assistant обрабатывает преобразование файлов App.config в appsettings.json, но расширение Visual Studio не поддерживает.
Совет
Если вы не хотите использовать файл appsettings.json, можно добавить пакет NuGet System.Configuration.ConfigurationManager
в приложение, а код будет компилировать и использовать файл App.config.
Несмотря на то, что appsettings.json является современным способом хранения и извлечения параметров и строк подключения, приложение по-прежнему имеет код, использующий файл App.config. Когда ваше приложение было перенесено, пакет NuGet System.Configuration.ConfigurationManager
был добавлен в проект, чтобы ваш код, использующий файл App.config, продолжал компилироваться.
При обновлении библиотек до .NET они модернизируются, поддерживая appsettings.json вместо App.config. Например, поставщики журналов в .NET Framework, которые были обновлены для .NET 6+ больше не используют App.config для параметров. Вам будет полезно следовать их указаниям и отказаться от использования App.config.
Поддержка appsettings.json предоставляется пакетом NuGet Microsoft.Extensions.Configuration
.
Выполните следующие действия, чтобы использовать файл appsettings.json в качестве поставщика конфигурации:
Удалите пакет или библиотеку NuGet
System.Configuration.ConfigurationManager
, если на него ссылается обновленное приложение.Добавьте пакет
Microsoft.Extensions.Configuration.Json
NuGet.Создайте файл с именем appsettings.json.
- Щелкните правой кнопкой мыши файл проекта в обозревателе решений и выберите Добавить>новый элемент.
- В поле поиска введите
json
. - Выберите шаблон файла конфигурации JavaScript JSON, и задайте имя на appsettings.json.
- Нажмите Добавить, чтобы добавить новый файл в проект.
Задайте файл appsettings.json для копирования в выходной каталог.
В обозревателе решений найдите файл appsettings.json и задайте следующие свойства:
- действие сборки: содержимое
- Копировать в выходной каталог: Копировать всегда
В коде запуска приложения необходимо загрузить файл параметров.
Код запуска приложения зависит от типа проекта. Например, приложение WPF использует файл
App.xaml.cs
для глобальной установки, а приложение Windows Forms использует методProgram.Main
для запуска. Независимо от того, необходимо выполнить две задачи при запуске:- Создайте элемент
internal static
(Friend Shared
в Visual Basic), к которому можно получить доступ в любом месте приложения. - При запуске системы назначьте экземпляр этому участнику.
В следующем примере создается элемент с именем
Config
, которому присваивается экземпляр в методеMain
, и загружается строка подключения.using Microsoft.Extensions.Configuration; internal class Program { internal static IConfiguration Config { get; private set; } private static void Main(string[] args) { Config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); // Use the config file to get a connection string. string? myConnectionString = Config.GetConnectionString("database"); // Run the rest of your app. } }
Imports Microsoft.Extensions.Configuration Module Program Private _config As IConfiguration ' Shared not required since Program is a Module Friend Property Config As IConfiguration Get Return _config End Get Private Set(value As IConfiguration) _config = value End Set End Property Sub Main(args As String()) Config = New ConfigurationBuilder() _ .AddJsonFile("appsettings.json") _ .Build() ' Use the config file to get a connection string Dim myConnectionString As String = Config.GetConnectionString("database") ' Run the rest of your app End Sub End Module
- Создайте элемент
Обновите остальную часть кода, чтобы использовать новые API конфигурации.
Удалите файл App.config из проекта.
Осторожность
Убедитесь, что приложение работает правильно без файла App.config. Создайте резервную копию файла App.config с помощью системы управления версиями или скопируйте файл в другом месте. После тщательного тестирования приложения удалите файл App.config.