다음을 통해 공유


Windows Forms .NET Framework에서 .NET으로 마이그레이션

이 문서에서는 .NET 업그레이드 도우미를 사용하여 Windows Forms 데스크톱 앱을 .NET으로 업그레이드하는 방법을 설명합니다. .NET은 플랫폼 간 기술임에도 불구하고 Windows Forms는 Windows 전용 프레임워크로 남아 있습니다.

필수 조건

평가

업그레이드를 수행하기 전에 프로젝트를 분석해야 합니다. .NET 업그레이드 도우미를 사용하여 프로젝트에 대한 코드 분석을 수행하면 잠재적인 마이그레이션 차단기를 식별하기 위해 참조할 수 있는 보고서가 생성됩니다.

프로젝트를 분석하고 보고서를 생성하려면 솔루션 탐색기 솔루션 파일을 마우스 오른쪽 단추로 클릭하고 업그레이드를 선택합니다. 분석을 수행하는 방법에 대한 자세한 내용은 .NET 업그레이드 도우미를 사용하여 프로젝트 분석을 참조하세요.

종속성 마이그레이션

여러 프로젝트를 업그레이드하는 경우 종속성이 없는 프로젝트부터 시작합니다. 일치 게임 샘플에서 MatchingGame 프로젝트는 MatchingGame.Logic 라이브러리에 의존하므로 MatchingGame.Logic을 먼저 업그레이드해야 합니다.

소스 제어나 복사본 등 코드를 백업해 두세요.

Visual Studio에서 프로젝트를 업그레이드하려면 다음 단계를 따릅니다.

  1. 솔루션 탐색기 창에서 MatchingGame.Logic 프로젝트를 마우스 오른쪽 단추로 클릭하고 업그레이드를 선택합니다.

    Visual Studio의 .NET 업그레이드 도우미 업그레이드 메뉴 항목 스크린샷.

    수행할 업그레이드를 선택하라는 메시지가 표시되는 새 탭이 열립니다.

  2. 현재 위치 프로젝트 업그레이드를 선택합니다.

    .NET 업그레이드 도우미 탭의 스크린샷. '현재 위치 프로젝트 업그레이드' 옵션이 강조 표시됩니다.

  3. 다음으로 대상 프레임워크를 선택합니다.

    업그레이드하는 프로젝트 형식에 따라 다양한 옵션이 제공됩니다. .NET Standard 2.0은 .NET Framework와 .NET 모두에서 사용할 수 있습니다. 라이브러리가 이 프로젝트에서 수행하는 Windows Forms와 같은 데스크톱 기술에 의존하지 않는 경우 이 옵션을 선택하는 것이 좋습니다.

    .NET 9.0을 선택한 다음, 다음을 선택합니다.

    .NET 업그레이드 도우미의 스크린샷. 대상 프레임워크 프롬프트가 열려 있고 .NET 8이 '다음' 단추와 함께 강조 표시됩니다.

  4. 코드 파일, 라이브러리 등 프로젝트와 관련된 모든 아티팩트가 포함된 트리가 표시됩니다. 개별 아티팩트 또는 전체 프로젝트를 업그레이드할 수 있으며 이는 기본값입니다. 업그레이드를 시작하려면 업그레이드 선택을 선택합니다.

    .NET 업그레이드 도우미의 스크린샷. '구성 요소 선택' 페이지가 열려 있으며 '업그레이드 선택' 단추가 강조 표시됩니다.

  5. 업그레이드가 완료되면 결과가 표시됩니다.

    프로젝트에서 마이그레이션된 항목을 보여 주는 .NET 업그레이드 도우미의 업그레이드 결과 탭 스크린샷.

    단색 녹색 원이 있는 아티팩트는 업그레이드되었으며 빈 녹색 원은 건너뛰었습니다. 건너뛴 아티팩트는 업그레이드 도우미가 업그레이드할 항목을 찾지 못했음을 의미합니다.

이제 앱의 지원 라이브러리가 업그레이드되었으므로 기본 앱을 업그레이드합니다.

Visual Basic 프로젝트에 대한 참고 사항

현재 .NET 업그레이드 도우미는 .NET Framework의 Visual Basic 템플릿에서 만든 설정 파일의 System.Configuration 사용을 인식하지 못합니다. 또한 .NET Framework 프로젝트에 사용되는 확장(예: My.ComputerMy.User)의 My 사용을 존중하지 않습니다. 이러한 확장은 .NET에서 제거되었습니다. 이러한 두 가지 문제로 인해 .NET 업그레이드 도우미로 마이그레이션된 후에는 Visual Basic 라이브러리가 컴파일되지 않습니다.

이 문제를 해결하려면 프로젝트에서 Windows를 대상으로 지정하고 Windows Forms를 참조해야 합니다.

  1. 마이그레이션이 완료되면 솔루션 탐색기 창에서 MatchingGame.Logic 프로젝트를 두 번 클릭합니다.
  2. <Project>/<PropertyGroup> 요소를 찾습니다.
  3. XML 편집기에서 값을 <TargetFramework> 다음으로 net9.0 변경합니다 net9.0-windows.
  4. 다음 <TargetFramework>줄에 추가 <UseWindowsForms>true</UseWindowsForms> 합니다.

프로젝트 설정은 다음 코드 조각과 같습니다.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net9.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <OutputType>Library</OutputType>
    <MyType>Windows</MyType>

    ... other settings removed for brevity ...

기본 프로젝트 마이그레이션

모든 지원 라이브러리가 업그레이드되면 기본 앱 프로젝트를 업그레이드할 수 있습니다. 예 앱을 사용하면 업그레이드할 라이브러리 프로젝트가 하나만 있으며 이는 이전 섹션에서 업그레이드되었습니다.

  1. 솔루션 탐색기 창에서 MatchingGame 프로젝트를 마우스 오른쪽 단추로 클릭하고 업그레이드를 선택합니다.
  2. 현재 위치 프로젝트 업그레이드를 선택합니다.
  3. 대상 프레임워크에 대해 .NET 9.0을 선택하고 다음을 선택합니다.
  4. 모든 아티팩트를 선택한 상태로 두고 업그레이드 선택을 선택합니다.

업그레이드가 완료되면 결과가 표시됩니다. Windows Forms 프로젝트에 경고 기호가 어떻게 있는지 확인합니다. 해당 항목을 확장하면 해당 단계에 대한 추가 정보가 표시됩니다.

일부 결과 항목에 경고 기호가 있음을 보여 주는 .NET 업그레이드 도우미의 업그레이드 결과 탭 스크린샷.

프로젝트 업그레이드 구성 요소에서 기본 글꼴이 변경되었다는 것을 언급합니다. 글꼴이 컨트롤 레이아웃에 영향을 줄 수 있으므로 프로젝트의 모든 양식과 사용자 지정 컨트롤을 확인하여 UI가 올바르게 정렬되었는지 확인해야 합니다.

클린 빌드 생성

주 프로젝트가 업그레이드된 후 이를 정리하고 컴파일합니다.

  1. 솔루션 탐색기 창에서 MatchingGame 프로젝트를 마우스 오른쪽 단추로 클릭하고 정리를 선택합니다.
  2. 솔루션 탐색기 창에서 MatchingGame 프로젝트를 마우스 오른쪽 단추로 클릭하고 빌드를 선택합니다.

애플리케이션에서 오류가 발생한 경우 오류 목록 창에서 해당 오류를 찾아 해결 방법을 제안할 수 있습니다.

이제 Windows Forms 일치 게임 샘플 프로젝트가 .NET 9로 업그레이드되었습니다.

업그레이드 후 환경

.NET Framework에서 .NET으로 앱을 포팅하는 경우 .NET Framework 문서에서 .NET으로 업그레이드한 후 현대화를 검토합니다.

  • .NET Framework에서 .NET으로 이식.

    포팅 가이드는 .NET Framework에서 .NET으로 코드를 포팅할 때 고려해야 할 사항을 간략하게 설명합니다. 프로젝트의 복잡도에 따라 프로젝트 파일의 초기 마이그레이션 후에 수행할 작업의 양이 결정됩니다.

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

    .NET Framework 이후 .NET의 기능은 많이 바뀌었습니다. 이 링크는 업그레이드 후 앱을 현대화하는 방법에 대한 몇 가지 정보를 제공합니다.