Open zeroskyx opened 2 months ago
Thanks for reporting this. I will try to look at this and a few other issues for RMS in the next couple of weeks, unless you'd like to submit a PR.
Hi @benmwatson,
thanks for the feedback. I've opened a PR that uses a new primitive available in .NET 8.0 that fixes the problem with the potentially dynamic types.
I've added net8.0
to the project types -- you might have to add that to the nuget build pipeline.
All the best -Simon
Greetings,
due to the call of
this.WriteEvent
, the library throws trim warnings sinceRequiresUnreferencedCodeAttribute
is not currently propagated to the invoking methods.Minimal reproduction
dotnet new console
dotnet add package Microsoft.IO.RecyclableMemoryStream
Program.cs
with:_ = new Microsoft.IO.RecyclableMemoryStreamManager();
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 callingthis.WriteEvent
would properly forward the trim warnings, not causing the library to produce trim warnings.