From 6f3d8e2938e2db8818904517fce16f4d4cd7ed9f Mon Sep 17 00:00:00 2001 From: Tomasz Cielecki <249719+Cheesebaron@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:28:16 +0100 Subject: [PATCH 1/2] Enable trim analyzer --- Directory.Build.props | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Directory.Build.props b/Directory.Build.props index 425190875..6d22e9244 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -21,6 +21,12 @@ True 5.0 + + + true + false + + true $(MSBuildThisFileDirectory)build/MathNet.Numerics.snk From f2f4f00b70da68a4e70a9cb62594b4d6984c4e71 Mon Sep 17 00:00:00 2001 From: Tomasz Cielecki <249719+Cheesebaron@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:28:30 +0100 Subject: [PATCH 2/2] Fix trimming warnings --- src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs | 4 ++++ src/Numerics/Providers/ProviderProbe.cs | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs b/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs index 2bf93ea69..1348a9f6a 100644 --- a/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs +++ b/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs @@ -29,11 +29,15 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; namespace MathNet.Numerics.LinearAlgebra.Solvers { +#if NET6_0_OR_GREATER + [RequiresUnreferencedCode("Uses Activator.CreateInstance which might require members that are not statically referenced")] +#endif public static class SolverSetup where T : struct, IEquatable, IFormattable { /// diff --git a/src/Numerics/Providers/ProviderProbe.cs b/src/Numerics/Providers/ProviderProbe.cs index 16ab34b22..17d5bbc50 100644 --- a/src/Numerics/Providers/ProviderProbe.cs +++ b/src/Numerics/Providers/ProviderProbe.cs @@ -28,6 +28,7 @@ // using System; +using System.Diagnostics.CodeAnalysis; using System.Threading; namespace MathNet.Numerics.Providers @@ -43,10 +44,19 @@ public ProviderProbe(string typeName, bool disabled = false) _creator = new Lazy>(() => { var type = Type.GetType(typeName); - return type is null ? null : Activator.CreateInstance(type) as IProviderCreator; + return CreateProvider(type); }, LazyThreadSafetyMode.ExecutionAndPublication); } + private static IProviderCreator CreateProvider( +#if NET6_0_OR_GREATER + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] +#endif + Type type) + { + return type == null ? null : Activator.CreateInstance(type) as IProviderCreator; + } + public T Create() { if (_disabled)