GRA code should successfully compile using either the free Visual Studio Code or Visual Studio Community edition. External dependencies are managed with NuGet and should be automatically downloaded upon the first build. The current main
branch requires C# 11 to compile, we are currently using Visual Studio 2022.
Framework history:
- Current work (versions 4.5.x) use .NET 8.0
- Versions 4.4.x use .NET 7.0
- Version 4.3.17 uses .NET 6.0
- Versions 4.2 and 4.2.1 use .NET 5.0
- Version 4.1.1 used ASP.NET Core v2.2
- Version 4.1.0 used ASP.NET Core v2.1
- Version 4.0.0 used ASP.NET Core v1.1
By default, GRA is configured to use LocalDB as a database for development and testing. While not packaged with Visual Studio Community, it can easily be added by selecting the notification flag in the title bar of Visual Studio and choosing to install the "MS SQL Server Update for database tooling". Alternately, the SQL Server Data Tools (SSDT) package can be installed manually by downloading it from Microsoft. You could also add a SQLite migration and configure the GRA to use SQLite.
If you have any trouble getting the package to build, please submit an issue with details.
The main
branch contains work in progress.
- Try to follow the HTML and CSS code guides.
- Wrap lines at 100 characters whenever possible.
IDisposable
calls should be called withusing
.async
methods should have "Async" at the end of the method name unless they are Controllers.- Avoid "magic numbers," place them in constants.
- Avoid adding settings to the
appsettings.json
configuration file, preferences generally belong somewhere that they can be set in the application. - Review the project organization.
- Follow the initial developer setup guidance.
- Examine guidance for adding an entity if necessary.
- We try to adhere to domain-driven design with varying levels of success.
- Development is done in the C# language.
- Version 4 of the GRA is developed using the Microsoft .NET Core platform using ASP.NET MVC.
- Data storage uses the Entity Framework Core data access technology.