-
Notifications
You must be signed in to change notification settings - Fork 209
Description
Greetings,
due to the call of this.WriteEvent, the library throws trim warnings since RequiresUnreferencedCodeAttribute is not currently propagated to the invoking methods.
Minimal reproduction
- Create new console app:
dotnet new console - Add RecycleableMemoryStream package:
dotnet add package Microsoft.IO.RecyclableMemoryStream - Replace contents of
Program.cswith:_ = new Microsoft.IO.RecyclableMemoryStreamManager(); - Publish trimmed assembly, and show all trim warnings:
dotnet publish -p:PublishTrimmed=true -p:EnableTrimAnalyzer=true -p:TrimmerSingleWarn=false
Expected result
The compilation and trimming concludes without any warnings
Actual result
The compilation emits trim warnings such as: /_/src/Events.cs(83,21): Trim analysis warning IL2026: Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamCreated(Guid, String, Int64, Int64): Using member 'System.Diagnostics.Tracing.EventSource.WriteEvent(Int32, Object[])' which has 'RequiresUnreferencedCodeAttribute' can break functionality when trimming application code. EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. /_/src/Events.cs(235,21): Trim analysis warning IL2026: Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardBuffer(Guid, String, RecyclableMemoryStreamManager.Events.MemoryStreamBufferType, RecyclableMemoryStreamManager.Events.MemoryStreamDiscardReason, Int64, Int64, Int64, Int64, Int64, Int64): Using member 'System.Diagnostics.Tracing.EventSource.WriteEvent(Int32, Object[])' which has 'RequiresUnreferencedCodeAttribute' can break functionality when trimming application code. EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed.
Adding [RequiresUnreferencedCodeAttribute] to all methods calling this.WriteEvent would properly forward the trim warnings, not causing the library to produce trim warnings.