- Capture full build output:
Use TestResults directory as it's already in .gitignore.
dotnet build src/Akka.sln > TestResults/full_build_output.txt
- Check target frameworks in affected projects
- Verify API usage against framework constraints:
- netstandard2.0 compatibility
- net6.0+ specific features
- Cross-platform considerations
- Determine if the warning involves public API
- Check for:
- Breaking changes
- Member hiding (intentional vs accidental)
- Interface implementations
- Binary compatibility
- For volatile/concurrent code:
- Verify thread-safety requirements
- Check Interlocked/Volatile usage
- Review memory barriers
- Consider actor message passing patterns
- Assess if fixes might impact:
- Message processing speed
- Memory allocation
- Lock contention
- Queue operations
- Create isolated fix branch
- For each change:
- Document current behavior
- Propose fix
- Build affected project first
- Build full solution
- Run unit tests
- Check for new warnings
-
CS0108: Member hiding
- Usually intentional in actor hierarchies
- Add
new
keyword only if hiding is intended - Document when left as-is
-
CS0420: Volatile field access
- Always use proper memory barriers
- Prefer Volatile.Read/Write
- Consider actor message passing instead
-
CS1998: Async method without await
- Check if async is needed
- Document if kept for API consistency
-
CS8974: Method group conversion
- Use explicit lambda syntax
- Check delegate parameter counts
-
Build specific project:
dotnet build src/core/Akka/Akka.csproj
-
Build full solution:
dotnet build src/Akka.sln
-
Run tests:
dotnet test src/Akka.sln
- Public API breaking changes
- Intentional member hiding
- Performance-critical code
- Thread-safety patterns
- Compatibility requirements
For each warning left unresolved:
- Document the reason
- Add appropriate pragma if needed
- Reference any relevant issues/discussions