This commit is contained in:
2025-11-09 02:08:31 +07:00
parent 1ed58d1a98
commit 7dba29c66f
57 changed files with 8362 additions and 359 deletions

View File

@@ -0,0 +1,243 @@
# 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:**
1. **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
2. **Missing using statements:**
- Error: "The type or namespace name 'X' could not be found"
- **Fix**: Add missing `using` statements
- Check namespace matches
3. **Type mismatches:**
- Error: "Cannot implicitly convert type 'X' to 'Y'"
- **Fix**: Add explicit casts or fix type definitions
- Check nullable reference types
4. **Missing method/property:**
- Error: "'X' does not contain a definition for 'Y'"
- **Fix**: Check if method/property exists
- Verify spelling and accessibility
5. **Nullable reference warnings (CS8625, CS8618):**
- **Fix**: Add `?` to nullable types or initialize properties
- Use null-forgiving operator `!` if appropriate
- Add null checks where needed
6. **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:**
1. **Nullable reference warnings (CS8625, CS8618):**
- **Fix**: Add nullable annotations or initialize properties
- Use `string?` for nullable strings
- Initialize properties in constructors
2. **Package version warnings (NU1608, NU1603, NU1701):**
- **Fix**: Update package versions to compatible versions
- Align MediatR versions across projects
- Update Microsoft.Extensions packages
3. **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.csproj` vs `Managing.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:**
1. Verify solution: `test -f src/Managing.sln` → ✅ Exists
2. Restore packages: `dotnet restore src/Managing.sln` → ✅ Restored
3. Build solution: `dotnet build src/Managing.sln --no-restore`
- Found error: Project reference to `Managing.Infrastructure.Database.csproj` not found
4. Fix error: Update `Managing.Workers.Api.csproj` reference to `Managing.Infrastructure.Databases.csproj`
5. Re-build: `dotnet build src/Managing.sln --no-restore` → ✅ Build successful
6. 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