티스토리 뷰

일단, .NET Framework 기반의 WinForm을 .NET 5로 마이그레이션 하는 방법은 MS의 공식문서로 존재한다.

이 포스팅은 기본적으로 MS의 공식문서 가이드를 따라 간다.

.NET 5로 마이그레이션 후 기존 UI와 조금씩 틀어지는 부분이 발생하였고, 이부분은 어쩔 수 없이 개인이 하나씩 확인하며 수정해야 할 듯 싶다.

(Windows Forms 데스크톱 앱을 .NET 5로 마이그레이션하는 방법)

 

 

[ 마이그레이션 과정 ]

0. 준비

    1) VisualStudio 2019

    2) 프로젝트 백업

 

1. packages.config

    1) 솔루션 탐색기에서 packages.config을 검색

    2) packages.config 파일 우클릭 > PackageReference로 마이그레이션 

    3) 솔루션내 모든 packages.config 파일에 적용

 

2. 프로젝트파일

    1) 프로젝트 각각 개별로 작업해야 함

    2) 마이그레이션할 프로젝트 우클릭 > 프로젝트 언로드

    3) 프로젝트 파일(*.csproj) 편집

        - 기존 내용은 복사하여 따로 보관

        - .NET 5용 내용으로 기본 셋팅   

 

   

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>

</Project>

        - 복사했던 기존 내용중 RootNamespace와 AssemblyName 태그를 복사하여 PropertyGroup 태그 하위에 추가

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>

    <RootNamespace>GTLauncher</RootNamespace>
    <AssemblyName>GTLauncher</AssemblyName>
  </PropertyGroup>

</Project>

        - 복사했던 기존 내용중 모든 ItemGroup 태그들을 Project 태그 하위에 추가

<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ......
  </PropertyGroup>

  <ItemGroup>
    <Compile Update="MainForm.cs" />
    <Compile Update="MainForm.Designer.cs">
      <DependentUpon>MainForm.cs</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  .
  .
  .
  

</Project>

        - Ctrl+F로 ProjectReference를 검색하여 ProjectReference 태그 하위에 Project와 Name 태그 삭제

<!-- 기존 -->
<ProjectReference Include="..\MatchingGame.Logic\MatchingGame.Logic.csproj">
  <Project>{36b3e6e2-a9ae-4924-89ae-7f0120ce08bd}</Project>
  <Name>MatchingGame.Logic</Name>
</ProjectReference>

<!-- 변경 -->
<ItemGroup>
  <ProjectReference Include="..\MatchingGame.Logic\MatchingGame.Logic.csproj" />
</ItemGroup>

        - Ctrl+H로 Compile Include를 Compile Update로 전체 변경

        - Ctrl+F로 <Reference Include를 검색하여 나오는 모든 태그 삭제

          ItemGroup 태그의 하위 태그가 없을시 해당 ItemGroup 태그도 삭제

    4) 마이그레이션할 프로젝트 우클릭 > 프로젝트 다시 로드

 

3. App.Config의 supportedRuntime 태그 삭제

 

 

[ 마이그레이션 후 빌드 시 유의사항 ]

1. 결과물은 기존 bin\Release\ 경로에서 bin\Release\net5.0-windows\ 경로로 변경되어 생성 됨

2. 프로그램명.runtimeconfig.json 파일이 생성되며, 같이 배포 해야함

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday