This sample application requires the .NET MAUI workload to be installed. The MAUI workload is not available in all CI/CD environments.
Before building this project on your local machine, ensure you have:
-
.NET 9.0 SDK installed
dotnet --version # Should show 9.0.x or higher -
MAUI workload installed
dotnet workload install maui
-
Platform-specific SDKs:
- For Android: Android SDK (API 24+)
- For iOS: Xcode 14+ (macOS only)
Check that MAUI is installed:
dotnet workload list
# Should show 'maui' in the listOnce the prerequisites are installed:
# Navigate to project directory
cd FabulousMauiTutorial/TaskManagerApp
# Restore packages
dotnet restore
# Build for Android
dotnet build -f net9.0-android
# Build for iOS (macOS only)
dotnet build -f net9.0-iosIf you want to test the F# code logic without building the full mobile app:
- You can create unit tests for the domain logic
- Test the update functions in isolation
- Test the data layer (MockData.fs)
Example test structure:
// In a separate test project
[<Test>]
let ``Task creation works correctly`` () =
let task = Task.create "Test Task"
Assert.AreEqual("Test Task", task.Title)
Assert.AreEqual(false, task.IsCompleted)For continuous integration:
- Use GitHub Actions with maui-action
- Use Azure DevOps with MAUI pipelines
- Ensure build agents have MAUI workload installed
Example GitHub Actions workflow:
- name: Install MAUI Workload
run: dotnet workload install maui --skip-manifest-update
- name: Build Android
run: dotnet build -f net9.0-android -c ReleaseError: NETSDK1147 - workloads must be installed
- Solution: Run
dotnet workload install maui
Error: Unable to find workload manifest
- Solution: Update .NET SDK to latest version
- Run:
dotnet workload update
Build succeeds but app doesn't run
- Check emulator/device is running
- Verify USB debugging is enabled (Android)
- Check developer mode is enabled (iOS)
If command-line building is problematic:
- Open
TaskManagerApp.fsprojin Visual Studio 2022 - Ensure MAUI workload is installed via VS Installer
- Select target platform (Android/iOS)
- Press F5 to build and run
This provides better debugging and error messages.
Even without building, you can review and learn from:
- Domain.fs - F# domain modeling
- MockData.fs - In-memory data patterns
- Features/TaskList/State.fs - MVU update logic
- Features/TaskDetail/View.fs - Declarative UI
- Controls/RadialSlider.fs - Custom control integration
These demonstrate Fabulous MAUI patterns that work the same way when MAUI is properly installed.