# Build Error Resolution Guide

## Overview

This guide addresses the two main types of build issues in the Jellyfin solution:
1. **CS0006 Metadata Errors** - Missing reference assemblies
2. **IDE#### Analyzer Warnings** - Code style suggestions

---

## 1. CS0006 Metadata Errors (ACTUAL BUILD FAILURES)

### Error Description
```
CS0006: Metadata file '...\obj\Debug\net11.0\ref\ProjectName.dll' could not be found
```

### Cause
These errors occur when:
- Project build artifacts are corrupted or missing
- Projects are built out of order
- Incremental build state is invalid
- Clean operation didn't complete properly

### Solution Options

#### Option A: Quick Rebuild (Recommended)
Run the provided PowerShell script:
```powershell
.\rebuild-solution.ps1
```

#### Option B: Manual Steps in Visual Studio
1. **Build → Clean Solution**
2. **Build → Rebuild Solution**

If that doesn't work:
3. Close Visual Studio
4. Delete all `bin` and `obj` folders:
   ```powershell
   Get-ChildItem -Path . -Include bin,obj -Recurse -Directory | Remove-Item -Recurse -Force
   ```
5. Reopen Visual Studio
6. **Build → Rebuild Solution**

#### Option C: Build Projects in Order
If full rebuild fails, build these projects manually in order:

```powershell
dotnet build "src\Jellyfin.Database\Jellyfin.Database.Implementations\Jellyfin.Database.Implementations.csproj"
dotnet build "src\Jellyfin.Database\Jellyfin.Database.Providers.Postgres\Jellyfin.Database.Providers.Postgres.csproj"
dotnet build "Jellyfin.Server.Implementations\Jellyfin.Server.Implementations.csproj"
dotnet build "Emby.Server.Implementations\Emby.Server.Implementations.csproj"
dotnet build "Jellyfin.Server\Jellyfin.Server.csproj"
dotnet build "Jellyfin.sln"
```

---

## 2. IDE#### Analyzer Warnings (CODE STYLE - NOT BUILD FAILURES)

### Common IDE Warnings and What They Mean

| Code | Description | Severity | Action Taken |
|------|-------------|----------|--------------|
| **IDE0005** | Using directive is unnecessary | Silent | Suppressed |
| **IDE0010** | Populate switch (add missing cases) | Silent | Suppressed |
| **IDE0031** | Null check can be simplified | Silent | Suppressed |
| **IDE0037** | Member name can be simplified | Silent | Suppressed |
| **IDE0047** | Parentheses can be removed | Silent | Suppressed |
| **IDE0055** | Fix formatting | Silent | Suppressed |
| **IDE0060** | Remove unused parameter | Silent | Suppressed |
| **IDE0100** | Remove redundant equality | Silent | Suppressed |
| **IDE0370** | Suppression is unnecessary | Silent | Suppressed |
| **IDE0004** | Cast is redundant | Silent | Suppressed |

### StyleCop Warnings

| Code | Description | Severity | Action Taken |
|------|-------------|----------|--------------|
| **SA1118** | Parameter spans multiple lines | Silent | Suppressed |

### Configuration

All IDE warnings have been suppressed in `.editorconfig`:

```ini
# IDE Rules - Suppress non-critical suggestions
dotnet_diagnostic.IDE0004.severity = silent
dotnet_diagnostic.IDE0005.severity = silent
dotnet_diagnostic.IDE0010.severity = silent
# ... etc
```

### When Suppressions Take Effect

1. **Visual Studio**: 
   - Restart Visual Studio after modifying `.editorconfig`
   - Or reload all projects: Right-click solution → **Reload Projects**

2. **Command Line**:
   - Changes apply immediately on next build
   - May need to clean and rebuild for full effect

### To See Warnings Again

If you want to see these warnings during development, change their severity:

```ini
# In .editorconfig
dotnet_diagnostic.IDE0055.severity = suggestion  # Shows as suggestion
dotnet_diagnostic.IDE0055.severity = warning     # Shows as warning
dotnet_diagnostic.IDE0055.severity = error       # Causes build failure
```

---

## 3. Troubleshooting

### Problem: .editorconfig Changes Not Taking Effect

**Solution:**
1. Close Visual Studio
2. Delete `.vs` folder in solution directory
3. Reopen Visual Studio
4. **Build → Rebuild Solution**

### Problem: Still Getting CS0006 Errors After Clean Build

**Solution:**
1. Check if any projects failed to build:
   ```powershell
   dotnet build Jellyfin.sln --no-incremental
   ```
2. Look for actual compilation errors (not IDE warnings)
3. Build failed projects individually
4. Check for circular dependencies

### Problem: Too Many Warnings Hiding Real Issues

**Solution:**
Adjust severity levels to your preference:
- `none` - Don't show at all
- `silent` - Don't show in Error List, but still in editor
- `suggestion` - Show as suggestion (···)
- `warning` - Show as warning (yellow)
- `error` - Show as error (red)

---

## 4. Build Script Usage

### rebuild-solution.ps1

This script automates the clean and rebuild process:

```powershell
# Run from solution root directory
.\rebuild-solution.ps1
```

**What it does:**
1. Cleans the solution
2. Removes all bin/obj directories
3. Restores NuGet packages
4. Rebuilds the entire solution

**When to use:**
- After switching branches
- After pulling changes that modify project files
- When getting CS0006 errors
- After modifying .csproj files

---

## 5. Git Considerations

### Files to Commit
- ✅ `.editorconfig` - Code style settings
- ✅ `rebuild-solution.ps1` - Build helper script
- ✅ `docs/build-error-resolution.md` - This guide

### Files to Ignore
- ❌ `bin/` directories (already in .gitignore)
- ❌ `obj/` directories (already in .gitignore)
- ❌ `.vs/` directory (already in .gitignore)

---

## 6. Summary

### Quick Reference

**CS0006 Errors (Build Failures):**
```powershell
# Quick fix
.\rebuild-solution.ps1
```

**IDE Warnings (Code Style):**
- Already suppressed in `.editorconfig`
- Restart Visual Studio if needed
- No action required for build

### Build Status Check

After fixing errors, verify clean build:
```powershell
dotnet build Jellyfin.sln --no-incremental
```

Expected output:
```
Build succeeded.
    0 Warning(s)
    0 Error(s)
```

---

## Support

If you continue to experience issues:
1. Check that you're using .NET 11 SDK
2. Verify all NuGet packages restored successfully
3. Check for antivirus interference with build process
4. Try building in a fresh clone of the repository
