7.6 KiB
build-solution
When to Use
Use this command when you want to:
- Build the entire .NET solution
- Fix compilation errors automatically
- Verify the solution builds successfully
- Check for and resolve build warnings
Prerequisites
- .NET SDK installed (
dotnet --version) - Solution file exists:
src/Managing.sln - All project files are present and valid
Execution Steps
Step 1: Verify Solution File Exists
Check that the solution file exists:
Run: test -f src/Managing.sln
If solution file doesn't exist:
- Error: "❌ Solution file not found at src/Managing.sln"
- STOP: Cannot proceed without solution file
Step 2: Restore NuGet Packages
Restore packages before building:
Run: dotnet restore src/Managing.sln
If restore succeeds:
- Continue to Step 3
If restore fails:
- Show restore errors
- Common issues:
- Network connectivity issues
- NuGet feed authentication
- Package version conflicts
- Try to fix:
- Check network connectivity
- Verify NuGet.config exists and is valid
- Clear NuGet cache:
dotnet nuget locals all --clear - Retry restore
- If restore still fails:
- Show detailed error messages
- STOP: Cannot build without restored packages
Step 3: Build Solution
Build the solution:
Run: dotnet build src/Managing.sln --no-restore
If build succeeds with no errors:
- Show: "✅ Build successful!"
- Show summary of warnings (if any)
- SUCCESS: Build completed
If build fails with errors:
- Continue to Step 4 to fix errors
If build succeeds with warnings only:
- Show warnings summary
- Ask user if they want to fix warnings
- If yes: Continue to Step 5
- If no: SUCCESS: Build completed with warnings
Step 4: Fix Compilation Errors
Analyze build errors and fix them automatically:
Common error types:
-
Project reference errors:
- Error: "project was not found"
- Fix: Check project file paths in .csproj files
- Verify project file names match references
- Update incorrect project references
-
Missing using statements:
- Error: "The type or namespace name 'X' could not be found"
- Fix: Add missing
usingstatements - Check namespace matches
-
Type mismatches:
- Error: "Cannot implicitly convert type 'X' to 'Y'"
- Fix: Add explicit casts or fix type definitions
- Check nullable reference types
-
Missing method/property:
- Error: "'X' does not contain a definition for 'Y'"
- Fix: Check if method/property exists
- Verify spelling and accessibility
-
Nullable reference warnings (CS8625, CS8618):
- Fix: Add
?to nullable types or initialize properties - Use null-forgiving operator
!if appropriate - Add null checks where needed
- Fix: Add
-
Package version conflicts:
- Warning: "Detected package version outside of dependency constraint"
- Fix: Update package versions in .csproj files
- Align package versions across projects
For each error:
- Identify the error type and location
- Read the file containing the error
- Fix the error following .NET best practices
- Re-run build to verify fix
- Continue until all errors are resolved
If errors cannot be fixed automatically:
- Show detailed error messages
- Explain what needs to be fixed manually
- STOP: User intervention required
Step 5: Fix Warnings (Optional)
If user wants to fix warnings:
Common warning types:
-
Nullable reference warnings (CS8625, CS8618):
- Fix: Add nullable annotations or initialize properties
- Use
string?for nullable strings - Initialize properties in constructors
-
Package version warnings (NU1608, NU1603, NU1701):
- Fix: Update package versions to compatible versions
- Align MediatR versions across projects
- Update Microsoft.Extensions packages
-
Obsolete API warnings:
- Fix: Replace with recommended alternatives
- Update to newer API versions
For each warning:
- Identify warning type and location
- Fix following best practices
- Re-run build to verify fix
If warnings cannot be fixed:
- Show warning summary
- Inform user warnings are acceptable
- SUCCESS: Build completed with acceptable warnings
Step 6: Verify Final Build
Run final build to confirm all errors are fixed:
Run: dotnet build src/Managing.sln --no-restore
If build succeeds:
- Show: "✅ Build successful! All errors fixed."
- Show final warning count (if any)
- SUCCESS: Solution builds successfully
If errors remain:
- Show remaining errors
- Return to Step 4
- STOP if errors cannot be resolved after multiple attempts
Error Handling
If solution file not found:
- Check path:
src/Managing.sln - Verify you're in the correct directory
- STOP: Cannot proceed without solution file
If restore fails:
- Check network connectivity
- Verify NuGet.config exists
- Clear NuGet cache:
dotnet nuget locals all --clear - Check for authentication issues
- Retry restore
If project reference errors:
- Check .csproj files for incorrect references
- Verify project file names match references
- Common issue:
Managing.Infrastructure.Database.csprojvsManaging.Infrastructure.Databases.csproj - Fix project references
If compilation errors persist:
- Read error messages carefully
- Check file paths and line numbers
- Verify all dependencies are restored
- Check for circular references
- STOP if errors require manual intervention
If package version conflicts:
- Update MediatR.Extensions.Microsoft.DependencyInjection to match MediatR version
- Update Microsoft.Extensions.Caching.Memory versions
- Align AspNetCore.HealthChecks.NpgSql versions
- Update packages in all affected projects
Example Execution
User input: /build-solution
AI execution:
- Verify solution:
test -f src/Managing.sln→ ✅ Exists - Restore packages:
dotnet restore src/Managing.sln→ ✅ Restored - Build solution:
dotnet build src/Managing.sln --no-restore- Found error: Project reference to
Managing.Infrastructure.Database.csprojnot found
- Found error: Project reference to
- Fix error: Update
Managing.Workers.Api.csprojreference toManaging.Infrastructure.Databases.csproj - Re-build:
dotnet build src/Managing.sln --no-restore→ ✅ Build successful - Success: "✅ Build successful! All errors fixed."
If nullable warnings:
1-3. Same as above
4. Build succeeds with warnings: CS8625 nullable warnings
5. Fix warnings: Add ? to nullable parameters, initialize properties
6. Re-build: dotnet build src/Managing.sln --no-restore → ✅ Build successful, warnings reduced
7. Success: "✅ Build successful! Warnings reduced."
If package conflicts:
1-3. Same as above
4. Build succeeds with warnings: NU1608 MediatR version conflicts
5. Fix warnings: Update MediatR.Extensions.Microsoft.DependencyInjection to 12.x
6. Re-build: dotnet build src/Managing.sln --no-restore → ✅ Build successful
7. Success: "✅ Build successful! Package conflicts resolved."
Important Notes
- ✅ Always restore first - Ensures packages are available
- ✅ Fix errors before warnings - Errors block builds, warnings don't
- ✅ Check project references - Common source of build errors
- ✅ Verify file names match - Project file names must match references exactly
- ✅ Nullable reference types - Use
?for nullable, initialize non-nullable properties - ⚠️ Package versions - Keep versions aligned across projects
- ⚠️ Warnings are acceptable - Some warnings (like NU1701) may be acceptable
- 📦 Solution location:
src/Managing.sln - 🔧 Build command:
dotnet build src/Managing.sln - 🗄️ Common fixes: Project references, nullable types, package versions