This repository hosts a .NET 6 web app derived from the ASP.NET Core MVC movie sample. It demonstrates fundamental practices for building an MVC application, including models, views, and controllers.
This project explores potential upgrade challenges when moving from .NET 6 to newer versions. It includes modifications to exhibit various learning opportunities and ensure a smoother transition to future .NET releases.
- Clone the repository.
- Restore dependencies with
dotnet restore
. - Run the app using
dotnet run
. - Visit the provided URL in your browser.
- This project is based on the original ASP.NET Core MVC movie sample from Microsoft.
- Minimal changes have been introduced to learn about upgrade issues and best practices.
- For documentation, refer to the official ASP.NET Core guides.
- For research purposes, this project intentionally references an out of date version of HtmlSanitizer.
- MvcMovie: an ASP.NET Core 6.0 MVC web app. This app performs CRUD operations on the
Movie
model in SQL Server. - MvcMovie.Tests: an nUnit test project for the MVC web app.
- RazorMovie: an ASP.NET Core 6.0 Razor Pages web app. This app uses HtmlSanitizer.
- RazorMovie.Tests: an MSTest project for the Razor web app.
- WpfMovie: a Windows Presentation Framework app that presents a form for editing in-memory
Movie
models. - WpfMovie.Tests: an nUnit test project for the WPF project.
- The WpfMovie project uses BinaryFormatter which is removed from .NET9 and deprecated in .NET8
- The upgrade must choose the correct TFM for the WPF project, and retain the OS specific TFM for the test project.
- The HtmlSanitizer reeference in the RazorMovie project is intentionally out of date, and upgrading it causes a namespace change that can confuse some tools.
- The upgrade of the MvcMovie project is expected to be the easiest scenario but the upgrade must still resolve any transitive challenges that surface from Microsoft.Data.SqlClient.
- The upgrade must choose which NuGet packages to upgrade. And, in this scenario upgrading from nUnit3 to newer version has a breaking change for the
Assert.That
API replacingAssert.AreEqual
.