CommunityToolkit.Mvvm 이용한 WPF 어플리케이션 만들기 두번째 입니다.
이번 게시글에는 프로젝트 생성 후 어플리케이션 작업을 위한 환경을 설정하겠습니다.
1. 비주얼 스튜디오 새 프로젝트 만들기
다음 과정을 통해 비주얼 스튜디오에서 새 프로젝트를 만듭니다.

상단 템플릿 검색 하단의 드롭박스로 검색어를 설정하여 WPF 애플리케이션을 선택 합니다.

위치를 설정 한 후 프로젝트 이름을 설정합니다.

.NET 8.0 버전이 얼마 전부터 지원되었기에 해당 버전을 선택합니다.

모든 설정을 완료하였다면 다음과 같이 솔루션 탐색기에 입력한 프로젝트 명이 올라온 것을 확인할 수 있습니다.
2. NuGet 패키지 관리
MVVM Toolkit을 사용하기 위해서 Nuget 패키지를 통해 MVVM Toolkit을 추가해야 합니다.
Nuget은 마이크로소프트에서 비주얼 스튜디오에서 개발 확정을 위해 지원하는 패키지 관리 프로그램입니다.
비주얼 스튜디오에 기본 탑제되어 있기 때문에 별도의 설치는 필요치 않습니다.

우측 솔루션 탐색기에서 [종속성] 이라는 부분에 마우스 커서를 가져간 후 오른쪽 클릭을 할 경우 나오는 메뉴에 [NuGet 패키지 관리] 가 있습니다.
해당 메뉴를 선택합니다.

1. [NuGet 패키지 관리]를 눌렀을 때 상단 탭을 보시면 처음에 [설치됨]으로 들어갈 있을 겁니다. [찾아보기]로 이동합니다.
2. 검색창에 [CommunityToolkit.Mvvm]를 입력합니다.
3. 하단 목록에서 [CommunityToolkit.Mvvm] 를 선택합니다.
4. 우측에 선택한 [CommunityToolkit.Mvvm] 내용이 나오면 [설치] 버튼을 눌러 설치합니다.


설치를 완료합니다.
3. 프로젝트 설정
프로젝트 내용을 생성하기에 앞서 프로젝트 설정을 하겠습니다.
해당 설정은 다음과 같이 솔루션에서 탐색기를 더블클릭 해서 나오는 프로젝트 설정 파일에서 일부 진행할 예정입니다.

내용을 입력하기에 앞서 기본 설정 내용은 다음과 같습니다.
천천히 따라오시면 됩니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
</ItemGroup>
</Project>
다음은 현재 프로젝트 설정 파일을 열었을 때 초기 내용입니다.
현재 ComunityToolkit.Mvvm 을 Nuget 패키지에서 설치하였기에 추가된 모습을 확인할 수 있습니다.
추가적으로 해당 프로젝트 설정 파일에서 빌드에 필요한 내용들을 추가합니다.
1. 높은 DPI 지원
높은 DPI를 가진 모니터에서 어플리케이션을 켰을 때 선명하게 보이기 윈한 옵션을 추가합니다.
저희가 생성한 프로젝트의 .NET은 8버전이기에 기본적으로 높은 DPI를 지원하지만 확실하기 위해 옵션을 넣어줍니다.
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
dpi 모드는 다음 태그를 사용하며 프로젝트 설정 파일 내에 추가하여 사용합니다.
해당 태그에 대한 자세한 내용은 하단 게시글을 참고해주세요.
c# ApplicationHighDpiMode 고해상도에서 선명하게
해상도라고 하기에는 애매한 C#의 WinForms 혹은 WPF로 생성된 응용 프로그램을 높은 DPI 디스플레이에서 흐릿하게 보일 경우 선명하게 보이게 하기 위해 들어가는 옵션이라고 이해했다. 마이크로소
austar.tistory.com
2. 버전 설정
추후 프로젝트 관리를 위해 버전 정보를 기입합니다.
<Version>1.0.0.0</Version>
버전 정보는 다음 태그를 사용하며 프로젝트 설정 파일 내에 추가합니다.
3. 참조 어셈블리 생성 하지 않음
참조 어셈블리는 프로젝트에서 특정 API를 사용할때 필요한 최소한의 메타 데이터를 포함한 특수한 형식의 어셈블리로 특정 버전에 대한 전체 구현 어셈블리 없이 특정 라이브러리 버전을 대상으로하는 프로그램을 빌드할 수 있도록 도와주는 어셈블리입니다.
현재 저는 작은 규모의 혼자서 작업하는 경우로 참조 어셈블리를 관리할 필요가 없기 때문에 참조 어셈블리를 상용하지 않도록 설정하겠습니다.
해당 옵션의 자세한 내용은 다음 게시글을 참고해주세요.
c# ProduceReferenceAssembly 참조 어셈블리 생성 여부
1. 서론C# 컴파일러 옵션 중 ProduceReferenceAssembly 옵션이 존재하며 해당 옵션은 컴파일러가 참조 어셈블리를 생성하는지에 대한 여부를 제어한다.제어에 대한 값은 true, false 를 사용할 수 있다.참조
austar.tistory.com
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
4. 빌드 출력 경로에 프레임워크 경로를 추가하지 않음.
타겟 프레임워크는 .Net 8.0으로 고정하였기에 빌드시 출력 경로에 프레임워크 경로를 빼도록 하겠습니다.
해당 옵션의 자세한 내용은 하단 게시글을 참조해주세요.
c# AppendTargetFrameworkToOutputPath 옵션
c# 비주얼 스튜디오 프로젝트 설정 파일에서 AppendTargetFrameworkToOutputPath 태그 옵션을 이용하면 프로젝트를 빌드하여 출려되는 결과물 경로에 프레임워크 경로를 추가할지 설정할 수 있다. 옵션은
austar.tistory.com
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
5. 빌드 출력 경로에 런타임 식별자 경로를 추가하지 않음.
타겟 런타임은 윈도우 64비트로 설정하였기에 블디스 출력 경로에 런타임 식별자 경로를 빼도록 하겠습니다.
해당 옵션의 자세한 내용은 하단 게시글을 참조해주세요.
c# AppendRuntimeIdentifierToOutputPath 옵션
이전에 올렸던 AppendTargetFrameworkToOutputPath 와 비슷한 옵션을 제공한다. 2024.04.23 - [c#/helper] - c# AppendTargetFrameworkToOutputPath 옵션 c# AppendTargetFrameworkToOutputPath 옵션 c# 비주얼 스튜디오 프로젝트 설정 파
austar.tistory.com
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
6. 결정적 어셈블리 설정
프로젝트를 빌드할 경우, 변경 사항이 없는 한 이전의 이진 콘텐츠가 동일하게 유지되도록 설정합니다.
해당 옵션의 자세한 내용은 하단 게시글을 참조해주세요.
c# Deterministic 결정적 어셈블리 생성
C# 프로젝트 설정 파일에 들어가는 옵션 중 하나로 해당 옵션이 true가 된다면 변경 사항이 없을 경우 새로 컴파일러를 통해 빌드를 할 경우에도 기존에 생성된 어셈블리와 동일한 파일이 생성되
austar.tistory.com
<Deterministic>true</Deterministic>
7. 타겟 플랫폼 설정
64비트로 플랫폼을 설정합니다.
<PlatformTarget>x64</PlatformTarget>
8. 어셈블리 이름 지정
<AssemblyName>ToDoList</AssemblyName>
해당 옵션들을 프로젝트 설정 파일에 입력을 완료하면 최종적으로 다음과 같은 형태가 됩니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- 빌드시 출력물-->
<OutputType>WinExe</OutputType>
<!-- .net 버전 설정-->
<TargetFramework>net8.0-windows</TargetFramework>
<!-- null 허용 경고 여부 -->
<Nullable>enable</Nullable>
<!--암시적 global using 지시문을 사용 및 사용하지 않도록 설정-->
<ImplicitUsings>enable</ImplicitUsings>
<!-- WPF 사용 설정-->
<UseWPF>true</UseWPF>
<!-- dpi 모드 설정 : 높은 dpi 모니터에서 어플리케이션을 선명하게 보여주는 기능을 함.-->
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
<!-- app.manifest 사용설정-->
<ApplicationManifest>app.manifest</ApplicationManifest>
<!-- 버전 설정-->
<Version>1.0.0.0</Version>
<!-- 해당 프로젝트를 컴파일 할 경우, 참조 어셈블리를 생성하지 않는다.-->
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<!-- 해당 프로젝트를 컴파일 할 경우, 출력 경로에 해당 프레임워크 경로를 추가 할지 설정한다. -->
<!-- AppendTargetFrameworkToOutputPath : true - bin\Debug\net8.0-->
<!-- AppendTargetFrameworkToOutputPath : false - bin\Debug-->
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<!-- 해당 프로젝트를 컴파일 할 경우, 출력 경로에 해당 런타임 식별자를 추가 할지 설정한다. -->
<!-- AppendRuntimeIdentifierToOutputPath : true - bin\Debug\net8.0\win-x64-->
<!-- AppendRuntimeIdentifierToOutputPath : false - bin\Debug\net8.0\-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!--결정적 어셈블리를 생성내용 변경이 없는 한 이진 콘텐츠가 동일하게 유지된다. -->
<Deterministic>true</Deterministic>
<!-- 프로젝트를 빌드할 때마다 항상 다시 빌드하도록 하도록 설정 -->
<RunPostBuildEvent>Always</RunPostBuildEvent>
<!-- 타겟 플랫폼 설정 -->
<PlatformTarget>x64</PlatformTarget>
<!-- 빌드 후 생성될 어셈블리 이름 지정 -->
<AssemblyName>ToDoList</AssemblyName>
</PropertyGroup>
</Project>
다음 게시글로는 MVVM 구조를 적용하여 프로젝트 구조를 짜도록 하겠습니다.
'c# > 프로젝트' 카테고리의 다른 글
| CommunityToolkit.Mvvm 이용한 WPF 어플리케이션 만들기 1. (0) | 2024.04.22 |
|---|