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
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)