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)