Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일

WinForm 프로젝트를 WPF 프로젝트 유형으로 변경하는 방법


(2025-04-10 업데이트) 이 글의 내용은 하나의 프로그램으로 완성한 WinForm 프로젝트를 WPF 프로젝트로 "마이그레이션"하는 방법을 설명하지 않습니다. 단순히 csproj의 프로젝트 유형을 변경하는 방법을 설명하는 것입니다.

예를 들어, "How to Change a Created Class Library to Console Application" 이런 수준의 변환을 설명하는 정도입니다.




사실 Visual Studio로 생성하는 모든 프로젝트들은 동일하게 XML 형식을 따르는 정보 파일이므로 서로 간에 변환이 가능합니다. 물론, 프로젝트 유형이 바뀌면 개별 프로젝트 형식에 맞는 소스 코드로 재구성해야 하는 것에는 변함이 없지만 그래도 기존 프로젝트를 그대로 유형만 바꾸도록 하는 것이 때로는 새롭게 프로젝트를 만드는 것보다 더 편리할 때가 있습니다.

이번 글에서는 Windows Forms 프로젝트를 WPF로 바꿔보겠습니다.

예제를 위해 간단한 윈폼 프로젝트를 만든 후, csproj 파일을 열어 ProjectTypeGuids 값을 다음과 같이 추가합니다.

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

C# Project - FAE04EC0-301F-11D3-BF4B-00C04F79EFBC
WPF Project - 60dc8134-eba5-43b8-bcc9-bb4bc16c2548

이어서 WPF 관련 어셈블리를 참조 추가하고,

  • PresentatioCore
  • PresentationFramework

"User Control (WPF)" 유형으로 App.xaml 파일을 새롭게 추가한 다음, App.xaml 파일에 대한 속성 창에서 "Build Action" 값이 "Page"로 되어 있는 것을 "ApplicationDefinition"으로 변경합니다. 이어서 .xaml 파일과 .xaml.cs 파일을 각각 다음과 같이 변경해서 저장합니다.

<Application x:Class="WindowsFormsApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WindowsFormsApp1"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Windows;

namespace WindowsFormsApp1
{
    public partial class App : Application
    {
    }
}

위의 App.xaml.cs 코드에는 기존 WinForm 프로젝트의 Program.cs 파일에 여러분이 작성한 코드가 있다면 WPF 환경에 맞게 마이그레이션합니다. 완료되면 Program.cs 파일을 삭제합니다.

이제 남은 작업은 Form을 Window로 바꾸는 것입니다. "Window (WPF)" 유형으로 MainWindow.xaml을 추가하고 역시 여러분들의 기존 WinForm 프로젝트에 있던 메인 Form 관련 코드를 MainWindow로 마이그레이션합니다. 마찬가지로 나머지 Form 들도 모두 "Window (WPF)" 유형으로 마이그레이션한 다음 완료되면 기존 Form 들은 모두 삭제합니다.

이제 빌드하고 실행하면 다음과 같이 WPF 윈도우(MainWindow)가 뜨는 것을 확인할 수 있습니다. (물론, Form에 작성한 코드가 많다면 WPF로 옮기는 것이 쉽진 않을 것입니다.)

winform_to_wpf_1.png

(첨부 파일은 기본 Windows Forms 프로젝트를 WPF로 변경한 예제입니다.)




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 4/10/2025]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  172  173  174  175  176  177  178  [179]  180  ...
NoWriterDateCnt.TitleFile(s)
586정성태6/4/200827235오류 유형: 56. WPF 디자이너 - The string was not recognized as a valid DateTime [2]
585정성태6/4/200835596.NET Framework: 101. WPF - ActiveX 컨트롤 호스팅하는 방법 [2]
582정성태5/16/200827409오류 유형: 55. Windowless ActiveX controls are not supported
580정성태4/24/200826364VC++: 34. 64비트 윈도우즈에서의 이벤트 후킹
579정성태4/24/200826154VC++: 33. 변환 후의 RGS 파일 내용을 얻는 방법
577정성태4/16/200827147.NET Framework: 100. XML Serializer를 이용한 값 복사 [5]
575정성태4/7/200824289오류 유형: 54. TFS Source Control - 명령을 사용할 수 없음 [2]
574정성태3/31/200822389오류 유형: 53. TFS 연결 오류 - The workspace [...] exists on computer [...]
573정성태3/25/200826595Windows: 31. TS Web Access와 UAC [1]
570정성태3/17/200825502오류 유형: 52. TFS 연결 오류 - TF31001 [2]
569정성태3/16/200827004Team Foundation Server: 24. TFS 2008로 마이그레이션 (2) [2]
566정성태2/28/200827997.NET Framework: 99. AppDomain.GetEntryAssembly()를 우회하는 방법파일 다운로드1
564정성태2/16/200827691Windows: 30. TS Web Access + Vista SP1 [2]
563정성태2/16/200827056오류 유형: 51. Vista(UAC) + 웹 프로젝트 디버깅: System.UnauthorizedAccessException
562정성태2/12/200831238Windows: 29. Windows Server 2008 설치 [4]
561정성태1/10/200825016오류 유형: 50. IE 7 + 잘못된 HTC 파일 경로 = File not found [5]
559정성태1/1/200829755Windows: 28. Vista에서 끌어다 놓기로 GAC 등록하는 방법 [2]
558정성태1/1/200846703개발 환경 구성: 33. 32bit/64bit OLE DB Provider [1]
557정성태12/22/200725167개발 환경 구성: 32. WSCF와 VS.NET 2008
556정성태12/16/200723164기타: 22. 인기 순위 정리 : 조회수 1000 회 이상
555정성태12/16/200726232기타: 21. 인기 순위 정리 : 조회수 500 ~ 999회 글 목록
554정성태12/16/200730627기타: 20. 인기 순위 정리 : 조회수 250 ~ 499회 글 목록
553정성태12/16/200730945기타: 19. 인기 순위 정리 : 조회수 100 ~ 249회 글 목록
552정성태12/16/200724525기타: 18. 인기 순위 정리 : 조회수 000 ~ 099 회 글 목록
550정성태12/16/200723815Team Foundation Server: 23. TFS 2005에서 TFS 2008로 마이그레이션 [2]
549정성태12/16/200725115Team Foundation Server: 22. TFS 설정 - 주소를 도메인으로 변경
... 166  167  168  169  170  171  172  173  174  175  176  177  178  [179]  180  ...