Share via


.NET Framework에서 .NET으로 업그레이드한 후 현대화

이 문서에서는 .NET Framework에서 .NET으로 업그레이드된 앱을 현대화할 수 있는 다양한 방법에 대해 알아봅니다. .NET 업그레이드 도우미 도구를 사용하여 앱을 .NET으로 업그레이드합니다.

누락된 API

.NET Framework 앱을 업그레이드할 때 비호환성이 있을 가능성이 큽니다. 이는 .NET Framework는 Windows 전용 기술이고 .NET은 여러 플랫폼에서 사용 가능한 기술이기 때문입니다. 일부 라이브러리는 그렇지 않습니다. 예를 들어 .NET은 .NET Framework처럼 Windows 레지스트리에 액세스하기 위한 기본 API를 제공하지 않습니다. Windows 레지스트리에 대한 지원은 Microsoft.Win32.Registry NuGet 패키지에서 제공됩니다. 많은 .NET Framework 관련 라이브러리는 .NET 또는 .NET Standard로 이식되었으며 NuGet에서 호스트됩니다. 프로젝트에서 누락된 참조를 찾은 경우 NuGet을 검색하세요.

Windows 호환 기능 팩

마이그레이션 후 새 버전의 .NET에서 지원되지 않는 .NET Framework API에 대한 일부 종속성이 있는 경우 Microsoft.Windows.Compatibility NuGet 패키지에서 찾을 수 있습니다. .NET 프로젝트에 약 20,000개의 API가 추가되므로 프로젝트에 사용할 수 있는 API 집합이 크게 증가합니다. 이러한 API에는 WMI(Windows Management Instrumentation) 및 Windows EventLog 관련 API와 같은 Windows 전용 API가 포함됩니다. 자세한 내용은 Windows 호환 기능 팩을 사용하여 코드를 .NET으로 이식을 참조하세요.

웹 브라우저 컨트롤

Windows Presentation Foundation 또는 Windows Forms와 같은 Windows 데스크톱 기술을 대상으로 하는 프로젝트에는 웹 브라우저 컨트롤이 포함되어 있을 수 있습니다. 제공된 웹 브라우저 컨트롤은 HTML5 및 기타 최신 웹 기술 이전에 설계되었을 가능성이 높으며 사용되지 않는 것으로 간주됩니다. Microsoft는 최신 웹 브라우저 컨트롤을 대체하는 Microsoft.Web.WebView2 NuGet 패키지를 게시합니다.

App.config

.NET Framework는 App.config 파일을 사용하여 연결 문자열 및 로그 공급자 구성과 같은 앱에 대한 설정을 로드합니다. 최신 .NET은 앱 설정에 appsettings.json 파일을 사용합니다. 업그레이드 도우미의 CLI 버전은 App.config 파일을 appsettings.json으로 변환하는 작업을 처리하지만 Visual Studio 확장은 그렇지 않습니다.

appsettings.json 파일을 사용하지 않으려는 경우 System.Configuration.ConfigurationManager NuGet 패키지를 앱에 추가하면 코드가 App.config 파일을 컴파일하고 사용합니다.

appsettings.json이 설정과 연결 문자열을 저장하고 검색하는 최신 방식이더라도 앱에는 여전히 App.config 파일을 사용하는 코드가 있습니다. 앱이 마이그레이션되었을 때 App.config 파일을 사용하는 코드가 계속 컴파일되도록 System.Configuration.ConfigurationManager NuGet 패키지가 프로젝트에 추가되었습니다.

라이브러리가 .NET으로 업그레이드되면 App.config 대신 appsettings.json을 지원하여 현대화됩니다. 예를 들어 .NET 6 이상용으로 업그레이드된 .NET Framework의 로깅 공급자는 더 이상 설정에 App.config를 사용하지 않습니다. 이 방향을 따르고 App.config을 사용하지 않는 것이 좋습니다.

appsettings.json에 대한 지원은 Microsoft.Extensions.Configuration NuGet 패키지에서 제공됩니다.

구성 공급자로 appsettings.json 파일을 사용하려면 다음 단계를 수행합니다.

  1. 업그레이드된 앱에서 참조하는 경우 System.Configuration.ConfigurationManager NuGet 패키지 또는 라이브러리를 제거합니다.

  2. Microsoft.Extensions.Configuration.Json NuGet 패키지를 추가합니다.

  3. appsettings.json이라는 파일을 만듭니다.

    1. 솔루션 탐색기 창에서 프로젝트 파일을 마우스 오른쪽 단추로 클릭하고 추가>새 항목...을 선택합니다.
    2. 검색 상자에 json을 입력합니다.
    3. JavaScript JSON 구성 파일 템플릿을 선택하고 이름appsettings.json으로 설정합니다.
    4. 추가를 눌러 프로젝트에 새 파일을 추가합니다.
  4. 출력 디렉터리에 복사할 appsettings.json 파일을 설정합니다.

    솔루션 탐색기 창에서 appsettings.json 파일을 찾고 다음 속성을 설정합니다.

    • 빌드 작업: 내용
    • 출력 디렉터리에 복사: 항상 복사
  5. 앱의 시작 코드에서 설정 파일을 로드해야 합니다.

    앱의 시작 코드는 프로젝트 유형에 따라 다릅니다. 예를 들어 WPF 앱은 전역 설정에 App.xaml.cs 파일을 사용하고 Windows Forms 앱은 시작에 Program.Main 메서드를 사용합니다. 그에 관계없이 시작 시 다음 두 가지 작업을 수행해야 합니다.

    • 앱의 어디에서나 액세스할 수 있는 internal static(Visual Basic의 경우 Friend Shared) 멤버를 만듭니다.
    • 시작 중에 해당 멤버에 인스턴스를 할당합니다.

    다음 예제에서는 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
    
  6. 새 구성 API를 사용하도록 코드의 나머지 부분을 업데이트합니다.

  7. 프로젝트에서 App.config 파일을 삭제합니다.

    주의

    App.config 파일 없이 앱이 올바르게 실행되는지 확인합니다. 소스 제어를 통해 또는 다른 곳에서 파일을 복사하여 App.config 파일을 백업합니다. 앱을 철저히 테스트한 후 App.config 파일을 삭제합니다.