-
Notifications
You must be signed in to change notification settings - Fork 18
Development
Welcome to the WinNUT project, and thank you for your interest in contributing. The project is constantly evolving, and new procedures or standards may be introduced at any time. See below for the most current information.
This project is built for .NET Framework 4.8, which is supported up to Visual Studio 2022.
The WinNUT project is currently built in Visual Studio 2022. You can download the Community edition for free. Install recommended extensions as needed for your purposes.
Build MSI Installers. Not necessary unless you're creating a distribution/release.
View stack traces in Visual Studio from the pasted contents of a stack trace. Free.
Save and load your open Visual Studio tabs. Useful for when you need to switch to another branch, and want to stash your progress in the current branch with notes on what you were doing at the time. Free.
The Assembly version is automatically incremented, as defined in SharedAssemblyInfo.vb
. The build number is automatically set as the number of days since January 1 2000, and the revision is the number of seconds since midnight divided by two. Major and minor versions are determined manually.
When releasing, make a Release build and check the version of the client after it's built. Edit the properties of the WinNUT-Setup
project:
- Update
Version
to the major.minor.build of the built client assembly - Let the
Product
andPackageCode
fields be regenerated
Commit the Setup project changes (and any other uncommitted changes) in git, and tag the commit with the version in the format vmajor.minor.build. Push and merge forks as necessary. Build the Setup project (in Release mode), then upload that and an archive of the client build output to a new GitHub release.
Windows Forms is the toolkit from Microsoft for creating UI applications in Windows. There are many design patterns for Windows Forms, but the WinNUT project will try to standardize on an MVC pattern, and likely shift between passive views and supervising controllers as convenient. The goal will be to take advantage of the tools provided by Microsoft.
- MVC design adherence
- Modularization
- Separate worker and GUI threads
- Use DataBinding when possible
Consider using a thirdparty framework to help with Forms management and design.
- Microsoft Learn Windows Forms documentation
- Microsoft Learn Windows Forms Data Binding
- BlogSpot, aviadezra MVP-VM Design Model, Design Codes
- SoftwareEngineering How to properly structure a project in winform?
- Microsoft Learn Walkthrough: Debug Custom Windows Forms Controls at Design Time
- BlogSpot, aviadezra Twisting the MVC Triad - Model View Presenter (MVP) Design Pattern
- Microsoft Learn Win32 User Experience Design Guidelines
- Globalizing Windows Forms applications
- Globalize and localize .NET applications
- Walkthrough: Localizing Windows Forms
This program uses the Multilingual App Toolkit 4.0 to provide translation support.
When a translation CSV is updated in the Translations/ folder, some manual work needs to be done in order to apply the translation to the program.
- Open the CSV file in an editor (Excel), and the related *.xlf file in the Multilingual toolkit.
- Copy and paste new/changed translations to their equivalent resource in the multilingual toolkit.
- Build the solution and make sure all resource files have been automatically updated.