diff --git a/Math.Numerics.2017.sln b/Math.Numerics.2017.sln
new file mode 100644
index 00000000..60f29318
--- /dev/null
+++ b/Math.Numerics.2017.sln
@@ -0,0 +1,41 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26430.12
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Numerics-2017", "src\Numerics\Numerics-2017.csproj", "{4C1F1555-F9C6-45A0-B076-97384CA2BA7F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestData-2017", "src\TestData\TestData-2017.csproj", "{032AE5BB-2D1C-405E-83EF-D4306803C4BE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests-2017", "src\UnitTests\UnitTests-2017.csproj", "{9B7A2692-AA86-4A4E-B83B-E2D025FB634F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ Release-Signed|Any CPU = Release-Signed|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4C1F1555-F9C6-45A0-B076-97384CA2BA7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4C1F1555-F9C6-45A0-B076-97384CA2BA7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C1F1555-F9C6-45A0-B076-97384CA2BA7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4C1F1555-F9C6-45A0-B076-97384CA2BA7F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C1F1555-F9C6-45A0-B076-97384CA2BA7F}.Release-Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {4C1F1555-F9C6-45A0-B076-97384CA2BA7F}.Release-Signed|Any CPU.Build.0 = Release|Any CPU
+ {032AE5BB-2D1C-405E-83EF-D4306803C4BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {032AE5BB-2D1C-405E-83EF-D4306803C4BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {032AE5BB-2D1C-405E-83EF-D4306803C4BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {032AE5BB-2D1C-405E-83EF-D4306803C4BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {032AE5BB-2D1C-405E-83EF-D4306803C4BE}.Release-Signed|Any CPU.ActiveCfg = Release-Signed|Any CPU
+ {032AE5BB-2D1C-405E-83EF-D4306803C4BE}.Release-Signed|Any CPU.Build.0 = Release-Signed|Any CPU
+ {9B7A2692-AA86-4A4E-B83B-E2D025FB634F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9B7A2692-AA86-4A4E-B83B-E2D025FB634F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9B7A2692-AA86-4A4E-B83B-E2D025FB634F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9B7A2692-AA86-4A4E-B83B-E2D025FB634F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9B7A2692-AA86-4A4E-B83B-E2D025FB634F}.Release-Signed|Any CPU.ActiveCfg = Release|Any CPU
+ {9B7A2692-AA86-4A4E-B83B-E2D025FB634F}.Release-Signed|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/Examples/Examples-2017.csproj b/src/Examples/Examples-2017.csproj
new file mode 100644
index 00000000..edbd54be
--- /dev/null
+++ b/src/Examples/Examples-2017.csproj
@@ -0,0 +1,67 @@
+
+
+ Debug
+ AnyCPU
+ net40;netstandard1.6
+ false
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ AllRules.ruleset
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ AllRules.ruleset
+
+
+ bin\Release-Signed\
+ TRACE
+ true
+ pdbonly
+ AnyCPU
+ bin\Release\Examples.dll.CodeAnalysisLog.xml
+ true
+ GlobalSuppressions.cs
+ prompt
+ AllRules.ruleset
+ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets
+ true
+ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules
+ true
+
+
+
+
+ 3.5
+
+
+
+ 3.5
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+ {b7cae5f4-a23f-4438-b5be-41226618b695}
+ Numerics
+
+
+
\ No newline at end of file
diff --git a/src/Numerics/Compatibility.cs b/src/Numerics/Compatibility.cs
index 98187a5c..2294cc15 100644
--- a/src/Numerics/Compatibility.cs
+++ b/src/Numerics/Compatibility.cs
@@ -1,4 +1,4 @@
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
namespace MathNet.Numerics
{
using System;
@@ -139,7 +139,7 @@ namespace MathNet.Numerics
}
#endif
-#if (PORTABLE || NET35)
+#if (PORTABLE || NET35 || NETSTANDARD1_6)
namespace MathNet.Numerics
{
using System;
@@ -334,3 +334,36 @@ namespace MathNet.Numerics
}
}
#endif
+
+#if NETSTANDARD1_6
+namespace MathNet.Numerics
+{
+ public interface ICloneable
+
+ {
+ object Clone();
+ }
+}
+#endif
+
+#if NETSTANDARD1_6
+namespace MathNet.Numerics
+{
+ using System;
+
+ public static class MathExtensions
+ {
+ public static int DivRem(int a, int b, out int result)
+ {
+ result = a/b;
+ return a%b;
+ }
+
+ public static long DivRem(long a, long b, out long result)
+ {
+ result = a/b;
+ return a%b;
+ }
+ }
+}
+#endif
diff --git a/src/Numerics/Complex32.cs b/src/Numerics/Complex32.cs
index d206f868..804fcd43 100644
--- a/src/Numerics/Complex32.cs
+++ b/src/Numerics/Complex32.cs
@@ -1030,7 +1030,7 @@ namespace MathNet.Numerics
}
}
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
var value = GlobalizationHelper.ParseSingle(ref token);
#else
var value = GlobalizationHelper.ParseSingle(ref token, format.GetCultureInfo());
diff --git a/src/Numerics/ComplexExtensions.cs b/src/Numerics/ComplexExtensions.cs
index 532ea9dd..77eddc23 100644
--- a/src/Numerics/ComplexExtensions.cs
+++ b/src/Numerics/ComplexExtensions.cs
@@ -32,7 +32,7 @@ namespace MathNet.Numerics
using System;
using System.Collections.Generic;
-#if !PORTABLE
+#if !PORTABLE || NETSTANDARD1_6
using System.Runtime;
#endif
@@ -607,7 +607,7 @@ namespace MathNet.Numerics
}
}
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
var value = GlobalizationHelper.ParseDouble(ref token);
#else
var value = GlobalizationHelper.ParseDouble(ref token, format.GetCultureInfo());
diff --git a/src/Numerics/Euclid.cs b/src/Numerics/Euclid.cs
index 394884e5..cf3af208 100644
--- a/src/Numerics/Euclid.cs
+++ b/src/Numerics/Euclid.cs
@@ -430,7 +430,7 @@ namespace MathNet.Numerics
while (b != 0)
{
long rem;
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
rem = a % b;
var quot = a / b;
#else
diff --git a/src/Numerics/Exceptions.cs b/src/Numerics/Exceptions.cs
index 5d17b7be..162935de 100644
--- a/src/Numerics/Exceptions.cs
+++ b/src/Numerics/Exceptions.cs
@@ -20,7 +20,7 @@ namespace MathNet.Numerics
public NonConvergenceException(string message, Exception innerException) : base(message, innerException)
{
}
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
protected NonConvergenceException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
@@ -48,7 +48,7 @@ namespace MathNet.Numerics
: base(message, innerException)
{
}
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
protected NumericalBreakdownException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
@@ -75,7 +75,7 @@ namespace MathNet.Numerics
: base(message, innerException)
{
}
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
protected NativeInterfaceException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
@@ -103,7 +103,7 @@ namespace MathNet.Numerics
: base(string.Format(Resources.InvalidParameterWithNumber, parameter), innerException)
{
}
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
protected InvalidParameterException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
@@ -126,7 +126,7 @@ namespace MathNet.Numerics
: base(Resources.MemoryAllocation, innerException)
{
}
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
protected MemoryAllocationException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
@@ -154,7 +154,7 @@ namespace MathNet.Numerics
: base(string.Format(Resources.SingularUMatrixWithElement, element), innerException)
{
}
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
protected SingularUMatrixException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
diff --git a/src/Numerics/GlobalizationHelper.cs b/src/Numerics/GlobalizationHelper.cs
index 30cf05f1..b9506ab5 100644
--- a/src/Numerics/GlobalizationHelper.cs
+++ b/src/Numerics/GlobalizationHelper.cs
@@ -131,7 +131,7 @@ namespace MathNet.Numerics
}
}
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
///
/// Globalized Parsing: Parse a double number
///
diff --git a/src/Numerics/LinearAlgebra/Matrix.Arithmetic.cs b/src/Numerics/LinearAlgebra/Matrix.Arithmetic.cs
index 793113a2..355311f1 100644
--- a/src/Numerics/LinearAlgebra/Matrix.Arithmetic.cs
+++ b/src/Numerics/LinearAlgebra/Matrix.Arithmetic.cs
@@ -36,7 +36,7 @@ namespace MathNet.Numerics.LinearAlgebra
///
/// Defines the base class for Matrix classes.
///
- public abstract partial class Matrix
+ public abstract partial class Matrix : ICloneable
{
///
/// The value of 1.0.
diff --git a/src/Numerics/LinearAlgebra/Matrix.BCL.cs b/src/Numerics/LinearAlgebra/Matrix.BCL.cs
index 2d6e5789..9c689109 100644
--- a/src/Numerics/LinearAlgebra/Matrix.BCL.cs
+++ b/src/Numerics/LinearAlgebra/Matrix.BCL.cs
@@ -36,7 +36,8 @@ using System.Text;
namespace MathNet.Numerics.LinearAlgebra
{
[DebuggerDisplay("Matrix {RowCount}x{ColumnCount}")]
- public abstract partial class Matrix
+
+ public abstract partial class Matrix : ICloneable
{
///
/// Indicates whether the current object is equal to another object of the same type.
@@ -84,11 +85,13 @@ namespace MathNet.Numerics.LinearAlgebra
///
/// A new object that is a copy of this instance.
///
+ ///
object ICloneable.Clone()
{
return Clone();
}
+
#endif
///
diff --git a/src/Numerics/LinearAlgebra/Matrix.Operators.cs b/src/Numerics/LinearAlgebra/Matrix.Operators.cs
index ee19f15c..0979bac1 100644
--- a/src/Numerics/LinearAlgebra/Matrix.Operators.cs
+++ b/src/Numerics/LinearAlgebra/Matrix.Operators.cs
@@ -35,7 +35,7 @@ namespace MathNet.Numerics.LinearAlgebra
///
/// Defines the base class for Matrix classes.
///
- public abstract partial class Matrix
+ public abstract partial class Matrix : ICloneable
{
///
/// Returns a Matrix containing the same values of .
diff --git a/src/Numerics/LinearAlgebra/Matrix.Solve.cs b/src/Numerics/LinearAlgebra/Matrix.Solve.cs
index e46f6d64..e3e353fa 100644
--- a/src/Numerics/LinearAlgebra/Matrix.Solve.cs
+++ b/src/Numerics/LinearAlgebra/Matrix.Solve.cs
@@ -36,7 +36,7 @@ namespace MathNet.Numerics.LinearAlgebra
///
/// Defines the base class for Matrix classes.
///
- public abstract partial class Matrix
+ public abstract partial class Matrix : ICloneable
{
// Factorizations
diff --git a/src/Numerics/LinearAlgebra/Matrix.cs b/src/Numerics/LinearAlgebra/Matrix.cs
index f11423f7..a42bc3ef 100644
--- a/src/Numerics/LinearAlgebra/Matrix.cs
+++ b/src/Numerics/LinearAlgebra/Matrix.cs
@@ -44,7 +44,7 @@ namespace MathNet.Numerics.LinearAlgebra
[Serializable]
public abstract partial class Matrix :
IFormattable, IEquatable>
-#if !PORTABLE
+#if PORTABLE || NET461
, ICloneable
#endif
where T : struct, IEquatable, IFormattable
diff --git a/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs b/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs
index d58245ef..37dc297b 100644
--- a/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs
+++ b/src/Numerics/LinearAlgebra/Solvers/SolverSetup.cs
@@ -44,7 +44,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers
/// The types that should not be loaded.
public static IEnumerable> LoadFromAssembly(Assembly assembly, bool ignoreFailed = true, params Type[] typesToExclude)
{
-#if NET45REFLECTION
+#if NET45REFLECTION || NETSTANDARD1_6
TypeInfo setupInterfaceType = typeof(IIterativeSolverSetup).GetTypeInfo();
IEnumerable candidates = assembly.DefinedTypes
.Where(typeInfo => !typeInfo.IsAbstract && !typeInfo.IsEnum && !typeInfo.IsInterface && typeInfo.IsVisible)
@@ -73,7 +73,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers
}
}
-#if NET45REFLECTION
+#if NET45REFLECTION || NETSTANDARD1_6
var excludedTypes = new List(typesToExclude.Select(type => type.GetTypeInfo()));
return setups
.Where(s => !excludedTypes.Any(t => t.IsAssignableFrom(s.SolverType.GetTypeInfo()) || t.IsAssignableFrom(s.PreconditionerType.GetTypeInfo())))
@@ -94,7 +94,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers
/// The types that should not be loaded.
public static IEnumerable> LoadFromAssembly(Type typeInAssembly, bool ignoreFailed = true, params Type[] typesToExclude)
{
-#if NET45REFLECTION
+#if NET45REFLECTION || NETSTANDARD1_6
return LoadFromAssembly(typeInAssembly.GetTypeInfo().Assembly, ignoreFailed, typesToExclude);
#else
return LoadFromAssembly(typeInAssembly.Assembly, ignoreFailed, typesToExclude);
@@ -109,7 +109,7 @@ namespace MathNet.Numerics.LinearAlgebra.Solvers
/// The types that should not be loaded.
public static IEnumerable> LoadFromAssembly(AssemblyName assemblyName, bool ignoreFailed = true, params Type[] typesToExclude)
{
-#if NET45REFLECTION
+#if NET45REFLECTION || NETSTANDARD1_6
return LoadFromAssembly(Assembly.Load(assemblyName), ignoreFailed, typesToExclude);
#else
return LoadFromAssembly(Assembly.Load(assemblyName.FullName), ignoreFailed, typesToExclude);
diff --git a/src/Numerics/LinearAlgebra/Storage/DenseColumnMajorMatrixStorage.cs b/src/Numerics/LinearAlgebra/Storage/DenseColumnMajorMatrixStorage.cs
index 0312a85a..6a59cffa 100644
--- a/src/Numerics/LinearAlgebra/Storage/DenseColumnMajorMatrixStorage.cs
+++ b/src/Numerics/LinearAlgebra/Storage/DenseColumnMajorMatrixStorage.cs
@@ -115,7 +115,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
///
void RowColumnAtIndex(int index, out int row, out int column)
{
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
row = index % RowCount;
column = index / RowCount;
#else
diff --git a/src/Numerics/Numerics-2017.csproj b/src/Numerics/Numerics-2017.csproj
new file mode 100644
index 00000000..d810d513
--- /dev/null
+++ b/src/Numerics/Numerics-2017.csproj
@@ -0,0 +1,31 @@
+
+
+ net40;netstandard1.6
+ false
+ True
+ Math.Numerics
+
+
+ NOSERIALIZATION
+
+
+ ..\..\out\test\Net35\
+ ..\..\obj\test\Net35\
+ ..\..\obj\test\Net35\
+ MathNet.Numerics
+ MathNet.Numerics
+
+
+
+
+
+
+
+
+
+ 4.3.0
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Numerics/Properties/AssemblyInfo.cs b/src/Numerics/Properties/AssemblyInfo.cs
index 97e8988e..5c497ff1 100644
--- a/src/Numerics/Properties/AssemblyInfo.cs
+++ b/src/Numerics/Properties/AssemblyInfo.cs
@@ -49,7 +49,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyFileVersion("3.20.0.0")]
[assembly: AssemblyInformationalVersion("3.20.0")]
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
[assembly: AssemblyTitle("Math.NET Numerics - Portable Edition")]
[assembly: InternalsVisibleTo("MathNet.Numerics.UnitTests")]
@@ -82,4 +82,3 @@ using System.Runtime.InteropServices;
#endif
#endif
-
diff --git a/src/Numerics/Properties/Resources.Designer.cs b/src/Numerics/Properties/Resources.Designer.cs
index 0aa64c61..5ad97650 100644
--- a/src/Numerics/Properties/Resources.Designer.cs
+++ b/src/Numerics/Properties/Resources.Designer.cs
@@ -40,7 +40,7 @@ namespace MathNet.Numerics.Properties {
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
-#if NET45REFLECTION
+#if NET45REFLECTION || NETSTANDARD1_6
if (object.ReferenceEquals(resourceMan, null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MathNet.Numerics.Properties.Resources", typeof(Resources).GetTypeInfo().Assembly);
diff --git a/src/Numerics/Random/CryptoRandomSource.cs b/src/Numerics/Random/CryptoRandomSource.cs
index c25e3b8f..d3b310b7 100644
--- a/src/Numerics/Random/CryptoRandomSource.cs
+++ b/src/Numerics/Random/CryptoRandomSource.cs
@@ -27,7 +27,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
//
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
using System;
using System.Collections.Generic;
diff --git a/src/Numerics/Random/RandomSeed.cs b/src/Numerics/Random/RandomSeed.cs
index c6b39a0d..1e7cad9a 100644
--- a/src/Numerics/Random/RandomSeed.cs
+++ b/src/Numerics/Random/RandomSeed.cs
@@ -6,7 +6,7 @@ namespace MathNet.Numerics.Random
{
static readonly object Lock = new object();
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
static readonly System.Random MasterRng = new System.Random();
#else
static readonly System.Security.Cryptography.RandomNumberGenerator MasterRng = new System.Security.Cryptography.RNGCryptoServiceProvider();
@@ -41,7 +41,7 @@ namespace MathNet.Numerics.Random
{
lock (Lock)
{
-#if PORTABLE
+#if PORTABLE || NETSTANDARD1_6
return MasterRng.NextFullRangeInt32() ^ Environment.TickCount ^ System.Guid.NewGuid().GetHashCode();
#else
var bytes = new byte[4];
diff --git a/src/Numerics/Threading/CommonParallel.cs b/src/Numerics/Threading/CommonParallel.cs
index b6978651..4e0885f8 100644
--- a/src/Numerics/Threading/CommonParallel.cs
+++ b/src/Numerics/Threading/CommonParallel.cs
@@ -36,7 +36,7 @@ namespace MathNet.Numerics.Threading
#if NET35
using Partitioner = MathNet.Numerics.Partitioner;
#endif
-#if !PORTABLE
+#if !PORTABLE && !NETSTANDARD1_6
using System.Collections.Concurrent;
#endif
diff --git a/src/TestData/Data.cs b/src/TestData/Data.cs
index 47a44f76..4a3afd07 100644
--- a/src/TestData/Data.cs
+++ b/src/TestData/Data.cs
@@ -6,7 +6,11 @@ namespace MathNet.Numerics.TestData
{
public static class Data
{
+#if NETSTANDARD1_6
+ static readonly Assembly DataAssembly = typeof(Data).GetTypeInfo().Assembly;
+#else
static readonly Assembly DataAssembly = typeof (Data).Assembly;
+#endif
public static Stream ReadStream(string name)
{
diff --git a/src/TestData/TestData-2017.csproj b/src/TestData/TestData-2017.csproj
new file mode 100644
index 00000000..9826df81
--- /dev/null
+++ b/src/TestData/TestData-2017.csproj
@@ -0,0 +1,303 @@
+
+
+ net35;netstandard1.6
+ false
+ MathNet.Numerics.TestData
+ MathNet.Numerics.TestData
+
+
+ ..\..\out\test\Net35\
+ ..\..\obj\test\Net35\
+ ..\..\obj\test\Net35\
+ pdbonly
+ true
+ TRACE
+ prompt
+ 4
+ AllRules.ruleset
+ 1591
+ false
+ 6
+
+
+ DEBUG;TRACE
+ ..\..\out\test-debug\Net35\
+ ..\..\obj\test-debug\Net35\
+ ..\..\obj\test-debug\Net35\
+ true
+ full
+ false
+ prompt
+ 4
+ AnyCPU
+ 1591
+ false
+ 6
+
+
+ ..\..\out\test-signed\Net35\
+ ..\..\obj\test-signed\Net35\
+ ..\..\obj\test-signed\Net35\
+
+ true
+ pdbonly
+ true
+ TRACE;STRONGNAME
+ prompt
+ 4
+ AllRules.ruleset
+ 1591
+ false
+ 6
+
+
+
+
+
+
+
+
+
+
+
+ Data\Codeplex-5667.csv
+
+
+ Data\Github-Cureos-1.csv
+
+
+ Data\Matlab\A.mat
+
+
+ Data\Matlab\collection-nocompress.mat
+
+
+ Data\Matlab\collection.mat
+
+
+ Data\Matlab\complex.mat
+
+
+ Data\Matlab\sparse-large.mat
+
+
+ Data\Matlab\sparse-small.mat
+
+
+ Data\Matlab\sparse_complex.mat
+
+
+ Data\Matlab\v.mat
+
+
+ Data\NIST\AtmWtAgt.dat
+
+
+ Data\NIST\Bennett5.dat
+
+
+ Data\NIST\BoxBOD.dat
+
+
+ Data\NIST\Chwirut1.dat
+
+
+ Data\NIST\Chwirut2.dat
+
+
+ Data\NIST\DanWood.dat
+
+
+ Data\NIST\Eckerle4.dat
+
+
+ Data\NIST\ENSO.dat
+
+
+ Data\NIST\Filip.dat
+
+
+ Data\NIST\Gauss1.dat
+
+
+ Data\NIST\Gauss2.dat
+
+
+ Data\NIST\Gauss3.dat
+
+
+ Data\NIST\Hahn1.dat
+
+
+ Data\NIST\Kirby2.dat
+
+
+ Data\NIST\Lanczos1.dat
+
+
+ Data\NIST\Lanczos2.dat
+
+
+ Data\NIST\Lanczos3.dat
+
+
+ Data\NIST\Lew.dat
+
+
+ Data\NIST\Longley.dat
+
+
+ Data\NIST\Lottery.dat
+
+
+ Data\NIST\Mavro.dat
+
+
+ Data\NIST\Meixner.dat
+
+
+ Data\NIST\MGH09.dat
+
+
+ Data\NIST\MGH10.dat
+
+
+ Data\NIST\MGH17.dat
+
+
+ Data\NIST\Michelso.dat
+
+
+ Data\NIST\Misra1a.dat
+
+
+ Data\NIST\Misra1b.dat
+
+
+ Data\NIST\Misra1c.dat
+
+
+ Data\NIST\Misra1d.dat
+
+
+ Data\NIST\Nelson.dat
+
+
+ Data\NIST\NoInt1.dat
+
+
+ Data\NIST\NoInt2.dat
+
+
+ Data\NIST\Norris.dat
+
+
+ Data\NIST\NumAcc1.dat
+
+
+ Data\NIST\NumAcc2.dat
+
+
+ Data\NIST\NumAcc3.dat
+
+
+ Data\NIST\NumAcc4.dat
+
+
+ Data\NIST\Pontius.dat
+
+
+ Data\NIST\Rat42.dat
+
+
+ Data\NIST\Rat43.dat
+
+
+ Data\NIST\Roszman1.dat
+
+
+ Data\NIST\SiRstvt.dat
+
+
+ Data\NIST\SmLs01t.dat
+
+
+ Data\NIST\SmLs02t.dat
+
+
+ Data\NIST\SmLs03t.dat
+
+
+ Data\NIST\SmLs04t.dat
+
+
+ Data\NIST\SmLs05t.dat
+
+
+ Data\NIST\SmLs06t.dat
+
+
+ Data\NIST\SmLs07t.dat
+
+
+ Data\NIST\SmLs08t.dat
+
+
+ Data\NIST\SmLs09t.dat
+
+
+ Data\NIST\Thurber.dat
+
+
+ Data\NIST\Wampler1.dat
+
+
+ Data\NIST\Wampler2.dat
+
+
+ Data\NIST\Wampler3.dat
+
+
+ Data\NIST\Wampler4.dat
+
+
+ Data\NIST\Wampler5.dat
+
+
+ Data\MatrixMarket\fidap007.mtx
+
+
+ Data\MatrixMarket\bp___200.mtx
+
+
+ Data\MatrixMarket\can24_pattern_symmetric_coordinate_24.mtx
+
+
+ Data\MatrixMarket\gear_integer_general_coordinate_100.mtx
+
+
+ Data\MatrixMarket\hilbert_real_symmetric_array_10.mtx
+
+
+ Data\MatrixMarket\random_real_general_array_100.mtx
+
+
+ Data\MatrixMarket\random_real_general_array_10_20.mtx
+
+
+ Data\MatrixMarket\random_real_general_array_20_10.mtx
+
+
+ Data\MatrixMarket\random_real_general_coordinate_10_20.mtx
+
+
+ Data\MatrixMarket\random_real_general_dense_10_20.comma
+
+
+ Data\MatrixMarket\random_real_general_dense_10_20.space
+
+
+ Data\MatrixMarket\random_real_general_dense_10_20.tab
+
+
+
\ No newline at end of file
diff --git a/src/UnitTests/UnitTests-2017-NetStandard.csproj b/src/UnitTests/UnitTests-2017-NetStandard.csproj
new file mode 100644
index 00000000..867cdba6
--- /dev/null
+++ b/src/UnitTests/UnitTests-2017-NetStandard.csproj
@@ -0,0 +1,25 @@
+
+
+ net45
+ false
+ ..\..\out\test\$(Configuration)\netstandard16
+ ..\..\obj\test\$(Configuration)\netstandard16
+ MathNet.Numerics.UnitTests
+ MathNet.Numerics.UnitTests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/UnitTests/UnitTests-2017.csproj b/src/UnitTests/UnitTests-2017.csproj
new file mode 100644
index 00000000..e23b79c7
--- /dev/null
+++ b/src/UnitTests/UnitTests-2017.csproj
@@ -0,0 +1,25 @@
+
+
+ net45
+ false
+ ..\..\out\test\$(Configuration)
+ ..\..\obj\test\$(Configuration)
+ MathNet.Numerics.UnitTests
+ MathNet.Numerics.UnitTests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file