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)