Add jobs
This commit is contained in:
243
.cursor/commands/build-solution.md
Normal file
243
.cursor/commands/build-solution.md
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user