# Developer Guide
This guide provides instructions on how to build the project and test your changes.
* [Prerequisites](#prerequisites)
* [Building the project](#building-the-project)
* [Running](#running)
## Prerequisites
### System Requirements
- Windows 10 20H2 or recent insider builds (recommended).
- At least 4 GB of RAM and x64 based CPU (recommended).
- (optional) Any git client such as [Git for Windows](https://git-scm.com/download/win) or [GitHub Desktop](https://desktop.github.com/).
- **GitHub Extension for Visual Studio** is enough for this project and is recommended for beginners.
### Visual Studio
Install latest VS2019 (stable or preview) from here: http://visualstudio.com/downloads
Include the following workloads:
- .NET desktop development
- Desktop development with C++
- MSIX Packaging Tools
- GitHub Extension for Visual Studio (recommended)
## Clone the repository
You can clone the repository using any git or GitHub Client of your choice.
You can even use Visual Studio's **Clone a repository** or GitHub's **Download Code as ZIP** feature.
After you have cloned the repository locally, open the **ModernFlyouts.sln** file on Visual Studio 2019.
## Building the project
Before building the project, please make sure setup your development environment properly and all dependency **Nuget Packages** are restored properly.
> Make sure you set the **Active Solution Configuration** to **Debug** and **Active Solution Configuration Platform** to **x64** in Visual Studio's **Configuration Manager**.
The **ModernFlyouts** project is the main one that contains all application source code.
But what you really need to do is to build the **ModernFlyouts.Package** project. It's the project that packages the app and run it properly.
Before building the **ModernFlyouts.Package** project, please make sure to do these things:
- Open the **Package.appxmanifest** on the **ModernFlyouts.Package**.
- Under the **Application** tab, please change the **Display Name** from **ModernFlyouts (Preview)** to anything else such as **ModernFlyouts (Dev)**
- This helps you to distinguish between the actual installation of **ModernFlyouts** and this test build.
- Now go to the **Packaging** tab.
- **(!!!Important!!!)** Please change the **Package name** from **32669SamG.ModernFlyouts** to something like **(YourName).ModernFlyouts** and the **Package display name** from **ModernFlyouts (Preview)** to **ModernFlyouts (Dev)**
- This will prevent the actual installation of **ModernFlyouts** from being overwritten by this test build.
- Now click on the **Choose Certificate** button next to the **Publisher** textbox
- On the **Choose a Certificate** dialog, you can either click on **Select from store** and click **Ok** on the next dialog. (or)
- You can click on **Create**, type in your name on the next dialog and click **Ok**.
That's it! Now you can actually build the app!
Choose the **ModernFlyouts.Package** project as the **Startup Project** and select **Build > Build ModernFlyouts.Package** or press Ctrl + B.
**Important Note:** When committing changes to the repo, please make sure you don't include the changes to the **ModernFlyouts.Package.wapproj** and the **Package.appxmanifest** files.
## Running
Never run the **ModernFlyouts** project. It will run a dummy app with no support for app-data.
Please make sure run the **ModernFlyouts.Package** project! If you have ModernFlyouts pre-installed on your computer, please make sure to close it before running this one.
Now to run the app, make sure **ModernFlyouts.Package** is the startup project and click on the **▶ Local Machine** button or **Debug > Start Debugging** or press F5 to run the app.