Repository navigation
Building from Source
Kevin Peter Koekemoer edited this page Oct 7, 2026
·
1 revision
Metadata Editor is written in C# using .NET 8.0 WPF (net8.0-windows) with an MVVM architecture and automated xUnit test suite.
- .NET 8.0 SDK (Windows x64)
- Windows 10 or Windows 11
- (Optional) Visual Studio 2022 (with .NET Desktop Development workload) or VS Code
-
(Optional) Inno Setup 6 (for compiling the Windows
MetadataEditor-Setup-v<Version>.exeinstaller)
MetadataEditor/
βββ .github/workflows/
β βββ build-and-release.yml # CI/CD pipeline for automated builds, tests & GitHub Releases
βββ Samples/ # Sample NFO files (Movie, TV Show, Episode, Album, Scene ASCII)
βββ src/
β βββ MetadataEditor/ # Main WPF Desktop Application
β β βββ Models/ # NfoMetadata, ArtworkItem, ActorItem, TrackItem, XmlExtraItem, AppSettings
β β βββ Services/ # NfoParserService, FileEncodingDetector, SettingsService, ThemeService, UpdateService
β β βββ ViewModels/ # MainViewModel, SettingsViewModel, RelayCommand
β β βββ Views/ # SettingsWindow, Converters
β β βββ Styles/ # Theme.xaml (Dynamic Dark/Midnight/Light resource brushes)
β β βββ Resources/ # app.ico, app.svg, generate-icon.ps1
β β βββ MainWindow.xaml # Main 3-tab shell & sidebar browser
β βββ tests/
β βββ MetadataEditor.Tests/ # xUnit automated test suite
βββ build-portable.bat # Builds framework-dependent portable distribution
βββ build-single-file.bat # Builds self-contained single-file executable
βββ installer.iss # Inno Setup installer script
βββ MetadataEditor.sln # Solution file
Clone the repository and run the standard .NET CLI commands from the repository root:
# 1. Clone the repository
git clone https://github.com/KevinK56/MetadataEditor.git
cd MetadataEditor
# 2. Restore and build the solution
dotnet build MetadataEditor.sln -c Release
# 3. Run the automated xUnit test suite
dotnet test MetadataEditor.sln -c Release
# 4. Run the application
dotnet run --project src/MetadataEditor/MetadataEditor.csprojRun build-single-file.bat or execute:
dotnet publish src/MetadataEditor/MetadataEditor.csproj `
-c Release `
-r win-x64 `
--self-contained true `
-p:PublishSingleFile=true `
-p:IncludeNativeLibrariesForSelfExtract=true `
-p:EnableCompressionInSingleFile=true `
-o release/single-fileRun build-portable.bat or execute:
dotnet publish src/MetadataEditor/MetadataEditor.csproj `
-c Release `
-r win-x64 `
--self-contained false `
-o release/portableWith Inno Setup 6 installed:
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" /DMyAppVersion="2026.10.08.1" installer.issThis outputs release\installer\MetadataEditor-Setup-v2026.10.08.1.exe.
Every push to master runs the GitHub Actions workflow .github/workflows/build-and-release.yml:
-
Dynamic Versioning: Calculates the build version from the UTC date and git commit count (
YYYY.MM.DD.<CommitCount>). -
Automated Testing: Runs all unit tests in
MetadataEditor.Tests(XML parsing, extra node attribute preservation, encoding detection, settings persistence, update service version comparison). -
Artifact Compilation: Builds the self-contained single-file
MetadataEditor.exe, portable.zipbundle, and Inno Setup installerMetadataEditor-Setup-v<Version>.exe. - GitHub Release Publishing: Automatically tags the commit and publishes all three release artifacts so users receive updates directly via the in-app UpdateService.
Metadata Editor β’ GitHub Repository β’ Latest Releases β’ Report an Issue β’ Licensed under GNU General Public License v3.0 (GPL-3.0)
Getting Started
User Guide
- π§ Interface & Menu Reference
- ποΈ Supported Formats & Fields
- πΌοΈ Artwork & Media Server Guide
- π€ Encoding & XML Preservation
- β¨οΈ Shortcuts & Settings
Reference & Support