diff --git a/ortools/fsharp/Google.sln b/ortools/fsharp/Google.sln
deleted file mode 100644
index 0201c4bf13..0000000000
--- a/ortools/fsharp/Google.sln
+++ /dev/null
@@ -1,48 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{f2a71f9b-5d33-465a-a702-920d77279786}") = "OrTools.FSharp", "OrTools.FSharp\OrTools.FSharp.fsproj", "{B7DC098E-1334-47D2-88D4-7DA1EF8A4076}"
-EndProject
-Project("{f2a71f9b-5d33-465a-a702-920d77279786}") = "OrTools.FSharp.Test", "OrTools.FSharp.Test\OrTools.FSharp.Test.fsproj", "{C3B40B0A-23B6-4629-9A45-01F52722A97D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Debug|x64.ActiveCfg = Debug|x64
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Debug|x64.Build.0 = Debug|x64
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Debug|x86.ActiveCfg = Debug|x86
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Debug|x86.Build.0 = Debug|x86
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Release|Any CPU.Build.0 = Release|Any CPU
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Release|x64.ActiveCfg = Release|x64
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Release|x64.Build.0 = Release|x64
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Release|x86.ActiveCfg = Release|x86
- {B7DC098E-1334-47D2-88D4-7DA1EF8A4076}.Release|x86.Build.0 = Release|x86
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Debug|x64.ActiveCfg = Debug|x64
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Debug|x64.Build.0 = Debug|x64
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Debug|x86.ActiveCfg = Debug|x86
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Debug|x86.Build.0 = Debug|x86
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Release|Any CPU.Build.0 = Release|Any CPU
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Release|x64.ActiveCfg = Release|x64
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Release|x64.Build.0 = Release|x64
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Release|x86.ActiveCfg = Release|x86
- {C3B40B0A-23B6-4629-9A45-01F52722A97D}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
-EndGlobal
diff --git a/ortools/fsharp/OrTools.FSharp.Test/OrTools.FSharp.Test.fsproj b/ortools/fsharp/OrTools.FSharp.Test/OrTools.FSharp.Test.fsproj
deleted file mode 100644
index 84b88602aa..0000000000
--- a/ortools/fsharp/OrTools.FSharp.Test/OrTools.FSharp.Test.fsproj
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
- Exe
- netcoreapp2.0
- Google.OrTools.FSharp.Test
- Google.OrTools.FSharp.Test
-
-
- full
-
-
-
-
-
-
-
-
-
-
-
- ..\..\..\bin\Google.OrTools.FSharp.dll
-
-
- ..\..\..\bin\Google.OrTools.dll
-
-
-
diff --git a/ortools/fsharp/OrTools.FSharp.Test/Program.fs b/ortools/fsharp/OrTools.FSharp.Test/Program.fs
deleted file mode 100644
index f21907b955..0000000000
--- a/ortools/fsharp/OrTools.FSharp.Test/Program.fs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Google.OrTools.FSharp
-
-module Program =
- []
- let main _ =
- printfn "Google.OrTools.FSharp Tests"
- 0
diff --git a/ortools/fsharp/OrTools.FSharp.Test/Tests.fs b/ortools/fsharp/OrTools.FSharp.Test/Tests.fs
deleted file mode 100644
index 492a60cbf4..0000000000
--- a/ortools/fsharp/OrTools.FSharp.Test/Tests.fs
+++ /dev/null
@@ -1,54 +0,0 @@
-namespace Google.OrTools.FSharp
-
-
-module Tests =
- open System
- open Xunit
-
- open Google.OrTools.LinearSolver
- open Google.OrTools.FSharp
-
-
- []
- let ``Equality Matrix cannot be empty`` () =
- try
- let opts = SolverOpts.Default.Name("Equality Constraints").Goal(Minimize).Objective([2.0;1.0;0.0;0.0;0.0]).Algorithm(LP CLP)
- opts |> lpSolve |> SolverSummary |> ignore
- with
- | Failure msg ->
- Assert.Equal("Must provide at least one Matrix/Vector pair for inequality/equality contraints", msg)
-
-
- []
- let ``Linear Solver with GLOP Solver`` () =
- let svr = Solver.CreateSolver("LinearProgramming", LinearProgramming.GLOP.ToString())
-
- // x1, x2 are continuous non-negative variables.
- let x1 = svr.MakeNumVar(Double.NegativeInfinity, Double.PositiveInfinity, "x1")
- let x2 = svr.MakeNumVar(Double.NegativeInfinity, Double.PositiveInfinity, "x2")
-
- // Maximize 8 * x1 + 4 * x2
- let objective = svr.Objective()
- objective.SetCoefficient(x1, 8.0)
- objective.SetCoefficient(x2, 4.0)
- objective.SetMaximization()
-
- // x1 + x2 <= 10.
- let c0 = svr.MakeConstraint(Double.NegativeInfinity, 10.0)
- c0.SetCoefficient(x1, 1.0)
- c0.SetCoefficient(x2, 1.0)
-
- // 5 * x1 + x2 <= 15.
- let c1 = svr.MakeConstraint(Double.NegativeInfinity, 15.0)
- c1.SetCoefficient(x1, 5.0)
- c1.SetCoefficient(x2, 1.0)
-
- Assert.Equal(svr.NumVariables(), 2)
- Assert.Equal(svr.NumConstraints(), 2)
-
- let resultStatus = svr.Solve()
-
- Assert.Equal(resultStatus, Solver.OPTIMAL)
- Assert.Equal(svr.Objective().Value(), 45.0)
- Assert.Equal(x1.SolutionValue(), 5.0/4.0)
- Assert.Equal(x2.SolutionValue(), 35.0/4.0)
diff --git a/ortools/fsharp/OrTools.FSharp/OrTools.FSharp.fsproj b/ortools/fsharp/OrTools.FSharp/OrTools.FSharp.fsproj
deleted file mode 100644
index 915ec5657b..0000000000
--- a/ortools/fsharp/OrTools.FSharp/OrTools.FSharp.fsproj
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
- Library
- Google.OrTools.FSharp
- netstandard2.0;net462
- Google.OrTools.FSharp
- OrTools.FSharp.nuspec
-
- ..\..\..\bin\or-tools.snk
- true
-
- false
-
- 0.0.0.0
- 0.0.0.0
- 0.0.0.0
-
-
-
- full
- true
- true
-
-
-
-
-
-
-
-
-
-
- ..\..\..\bin\Google.OrTools.dll
-
-
-
diff --git a/ortools/fsharp/OrTools.FSharp/OrTools.FSharp.nuspec b/ortools/fsharp/OrTools.FSharp/OrTools.FSharp.nuspec
deleted file mode 100644
index 71dd340ec8..0000000000
--- a/ortools/fsharp/OrTools.FSharp/OrTools.FSharp.nuspec
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- MMMM
- VVVV
- Google Inc.
- https://github.com/google/or-tools/blob/master/LICENSE-2.0.txt
- https://developers.google.com/optimization
- F# wrapper for the Operations Research Tools project
- Copyright 2018 Google, Inc
- Operations Research Math Linear Constraint Programming F#
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ortools/fsharp/OrTools.FSharp/OrTools.fs b/ortools/fsharp/OrTools.FSharp/OrTools.fs
deleted file mode 100644
index 570dba052b..0000000000
--- a/ortools/fsharp/OrTools.FSharp/OrTools.fs
+++ /dev/null
@@ -1,358 +0,0 @@
-namespace Google.OrTools
-
-module FSharp =
-
- open System
- open Google.OrTools.Algorithms
- open Google.OrTools.LinearSolver
-
- type Goal =
- /// Maximize the Objective Function
- | Maximize
- /// Minimize the Objective Function
- | Minimize
-
- /// Linear Programming Algorithm
- type LinearProgramming =
- /// Coin-Or (Recommended default)
- | CLP
- /// GNU Linear Programming Kit
- | GLPK
- /// Google Linear Optimization
- | GLOP
- /// Gurobi Optimizer
- | GUROBI
- /// IBM CPLEX
- | CPLEX
- /// Solver Name
- override this.ToString() =
- match this with
- | CLP -> "CLP_LINEAR_PROGRAMMING"
- | GLPK -> "GLPK_LINEAR_PROGRAMMING"
- | GLOP -> "GLOP_LINEAR_PROGRAMMING"
- | GUROBI -> "GUROBI_LINEAR_PROGRAMMING"
- | CPLEX -> "CPLEX_LINEAR_PROGRAMMING"
- /// Solver Id
- member this.Id =
- match this with
- | CLP -> 0
- | GLPK -> 1
- | GLOP -> 2
- | GUROBI -> 6
- | CPLEX -> 10
-
- /// Integer Programming Algoritm
- type IntegerProgramming =
- /// Solving Constraint Integer Programs (Recommended default)
- | SCIP
- /// GNU Linear Programming Kit
- | GLPK
- /// Coin-Or Branch and Cut
- | CBC
- /// Gurobi Optimizer
- | GUROBI
- /// IBM CPLEX
- | CPLEX
- /// Binary Optimizer
- | BOP
- /// Solver Name
- override this.ToString() =
- match this with
- | SCIP -> "SCIP_MIXED_INTEGER_PROGRAMMING"
- | GLPK -> "GLPK_MIXED_INTEGER_PROGRAMMING"
- | CBC -> "CBC_MIXED_INTEGER_PROGRAMMING"
- | GUROBI -> "GUROBI_MIXED_INTEGER_PROGRAMMING"
- | CPLEX -> "CPLEX_MIXED_INTEGER_PROGRAMMING"
- | BOP -> "BOP_INTEGER_PROGRAMMING"
- /// Solver Id
- member this.Id =
- match this with
- | SCIP -> 3
- | GLPK -> 4
- | CBC -> 5
- | GUROBI -> 7
- | CPLEX -> 11
- | BOP -> 12
-
- type LinearSolverAlgorithm =
- | LP of LinearProgramming
- | IP of IntegerProgramming
-
- /// Max Flow Solver Result
- type MaximumFlowResult =
- | Optimal
- | IntegerOverflow
- | BadInput
- | BadResult
- member this.Id =
- match this with
- | Optimal -> 0
- | IntegerOverflow -> 1
- | BadInput -> 2
- | BadResult -> 3
-
- /// Minimum Cost Flow Result
- type MinimumCostFlowResult =
- | NotSolved
- | Optimal
- | Feasible
- | Infeasible
- | Unbalanced
- | BadResult
- | BadCostRange
- member this.Id =
- match this with
- | NotSolved -> 0
- | Optimal -> 1
- | Feasible -> 2
- | Infeasible -> 3
- | Unbalanced -> 4
- | BadResult -> 5
- | BadCostRange -> 6
-
-
- /// Knapsack Solver Algorithm
- type KnapsackSolverAlgorithm =
- | BruteForce
- | SixtyFourItems
- | DynamicProgramming
- | MultidimensionCBC
- | MultidimensionGLPK
- | MultidimensionBranchAndBound
- | MultidimensionSCIP
- /// Solver Id
- member this.Id =
- match this with
- | BruteForce -> 0
- | SixtyFourItems -> 1
- | DynamicProgramming -> 2
- | MultidimensionCBC -> 3
- | MultidimensionGLPK -> 4
- | MultidimensionBranchAndBound -> 5
- | MultidimensionSCIP -> 6
-
- let knapsackSolve (name: string) (solverAlgorithm:KnapsackSolverAlgorithm) (profits:int64 list) (weights:int64 list) (capacities:int64 list) =
- // extract the specific algorithm so its Id can be used to create solver
- let algorithm =
- match solverAlgorithm with
- | MultidimensionBranchAndBound ->
- MultidimensionBranchAndBound.Id
- | BruteForce ->
- BruteForce.Id
- | SixtyFourItems ->
- SixtyFourItems.Id
- | DynamicProgramming ->
- DynamicProgramming.Id
- | MultidimensionCBC ->
- MultidimensionCBC.Id
- | MultidimensionGLPK ->
- MultidimensionGLPK.Id
- | MultidimensionSCIP ->
- MultidimensionSCIP.Id
-
- let solver = new KnapsackSolver(algorithm, name)
-
- // transform lists to compatible structures for C++ Solver
- let profits = new KInt64Vector( List.toArray profits )
-
- let weights =
- let tempVector = new KInt64VectorVector(1)
- let tempWeights = new KInt64Vector(List.toArray weights)
- tempVector.Add(tempWeights)
- tempVector
-
- let capacities = new KInt64Vector (List.toArray capacities)
-
- solver.Init(profits, weights, capacities)
- solver
-
- type SolverOpts = {
- /// Name of the solver
- SolverName: string;
- /// Linear objective function vector
- ObjectiveFunction: float list;
- /// Matrix for linear inequality constraints
- ConstraintMatrix: float list list option;
- /// Upper Bound vector for linear inequality constraints
- ConstraintVectorUpperBound: float list option;
- /// Lower Bound vector for linear inequality constraints
- ConstraintVectorLowerBound: float list option;
- /// Vector of variable upper bounds
- VariableUpperBound: float list;
- /// Vector of variable lower bounds
- VariableLowerBound: float list;
- /// Matrix for linear equality constraints
- ConstraintMatrixEq: float list list option;
- /// Vector for linear equality constraints
- ConstraintVectorEq: float list option;
- /// Solver Algorithm to use
- SolverAlgorithm: LinearSolverAlgorithm;
- /// Solver Goal (Minimize/Maximize)
- SolverGoal: Goal
- } with
- member this.Name(nm:string)=
- {this with SolverName = nm}
- member this.Objective(objVector:float list) =
- {this with ObjectiveFunction = objVector}
- member this.Matrix(mat:float list list) =
- {this with ConstraintMatrix = Some(mat)}
- member this.VectorUpperBound(vec:float list) =
- {this with ConstraintVectorUpperBound = Some(vec)}
- member this.VectorLowerBound(vec:float list) =
- {this with ConstraintVectorLowerBound = Some(vec)}
- member this.MatrixEq(mat:float list list) =
- {this with ConstraintMatrixEq = Some(mat)}
- member this.VectorEq(vec:float list) =
- {this with ConstraintVectorEq = Some(vec)}
- member this.VarUpperBound(ub:float list) =
- {this with VariableUpperBound = ub}
- member this.VarLowerBound(lb:float list) =
- {this with VariableLowerBound = lb}
- member this.Algorithm(algo:LinearSolverAlgorithm) =
- {this with SolverAlgorithm = algo}
- member this.Goal(goal:Goal) =
- {this with SolverGoal = goal}
- static member Default =
- {
- SolverName = "Solver";
- ObjectiveFunction = [];
- ConstraintMatrix = None;
- ConstraintVectorUpperBound = None;
- ConstraintVectorLowerBound = None;
- VariableUpperBound = [];
- VariableLowerBound = [];
- ConstraintMatrixEq = None;
- ConstraintVectorEq = None;
- SolverAlgorithm = LP CLP
- SolverGoal = Maximize
- }
-
- let lpSolve (solverOptions:SolverOpts) =
- // extract the specific algorithm so its Id can be used to create solver
- let algorithm =
- match solverOptions.SolverAlgorithm with
- | LP lp -> lp.Id
- | IP ip -> ip.Id
-
- let solver = new Solver(solverOptions.SolverName, algorithm)
-
- // Detect errors on required parameters
- if (solverOptions.ConstraintMatrix.IsNone && solverOptions.ConstraintVectorUpperBound.IsNone && solverOptions.ConstraintVectorLowerBound.IsNone)
- && (solverOptions.ConstraintMatrixEq.IsNone && solverOptions.ConstraintVectorEq.IsNone) then
- failwith "Must provide at least one Matrix/Vector pair for inequality/equality contraints"
-
- if solverOptions.ObjectiveFunction.IsEmpty then
- failwith "Objective function cannot be empty"
-
- if solverOptions.VariableUpperBound.IsEmpty then
- failwith "Variable upper bound values cannot be empty"
-
- if solverOptions.VariableLowerBound.IsEmpty then
- failwith "Variable lower bound values cannot be empty"
-
- // check inequality matrix dimensions against bounds
- match (solverOptions.ConstraintMatrix, solverOptions.ConstraintVectorLowerBound, solverOptions.ConstraintVectorUpperBound) with
- | _, Some lb, Some ub when lb.Length <> ub.Length ->
- failwithf "Constraint vector dimensions should be equal.\nLower Bound Length: %i\nUpper Bound Length: %i" lb.Length ub.Length
- | _ -> ()
-
- // Check Objective function dimensions with variable bounds dimensions
- match (solverOptions.ObjectiveFunction.Length, solverOptions.VariableLowerBound.Length, solverOptions.VariableUpperBound.Length) with
- | _ , lb, ub when lb <> ub ->
- failwithf "Variable vector dimensions should be equal.\nLower Bound Length: %i\nUpper Bound Length: %i" lb ub
- | obj, _ , ub when obj <> ub ->
- failwithf "Variable vector dimensions should be equal.\nUpper Bound Length: %i\nObjective Function Length: %i" ub obj
- | obj, lb, _ when obj <> lb ->
- failwithf "Variable vector dimensions should be equal.\nLower Bound Length: %i\nObjective Function Length: %i" lb obj
- | _ -> ()
-
- // Variables
- let vars =
- match solverOptions.SolverAlgorithm with
- | LP lp ->
- [ for i in 0 .. (solverOptions.VariableLowerBound.Length-1) -> solver.MakeNumVar(solverOptions.VariableLowerBound.[i], solverOptions.VariableUpperBound.[i], (sprintf "var[%i]" i ) ) ]
- | IP ip ->
- [ for i in 0 .. (solverOptions.VariableLowerBound.Length-1) -> solver.MakeIntVar(solverOptions.VariableLowerBound.[i], solverOptions.VariableUpperBound.[i], (sprintf "var[%i]" i ) ) ]
-
- // Constraints
- let cols = [ for i in 0 .. (solverOptions.VariableLowerBound.Length-1) -> i ] // generate column index selectors
-
- // Inequality Constraints
- match (solverOptions.ConstraintMatrix, solverOptions.ConstraintVectorLowerBound, solverOptions.ConstraintVectorUpperBound) with
- | (None, Some lb, Some ub) ->
- failwithf "Matrix for Equality Constraints undefined."
- | (Some mat, None, Some ub) ->
- for row = 0 to (ub.Length-1) do
- // generate constraint operands based on indices
- let constraintOperands = List.map (fun c -> vars.[c] * mat.[c].[row]) cols
- let linearExp = List.reduce (+) constraintOperands
-
- // create the constraint
- let rangeConstraint = RangeConstraint(linearExp, Double.NegativeInfinity, ub.[row])
- solver.Add(rangeConstraint) |> ignore
- | (Some mat, Some lb, None) ->
- for row = 0 to (lb.Length-1) do
- // generate constraint operands based on indices
- let constraintOperands = List.map (fun c -> vars.[c] * mat.[c].[row]) cols
- let linearExp = List.reduce (+) constraintOperands
-
- // create the constraint
- let rangeConstraint = RangeConstraint(linearExp, lb.[row], Double.PositiveInfinity)
- solver.Add(rangeConstraint) |> ignore
- | (Some mat, Some lb, Some ub) ->
- for row = 0 to (ub.Length-1) do
- // generate constraint operands based on indices
- let constraintOperands = List.map (fun c -> vars.[c] * mat.[c].[row]) cols
- let linearExp = List.reduce (+) constraintOperands
-
- // create the constraint
- let rangeConstraint = RangeConstraint(linearExp, lb.[row], ub.[row])
- solver.Add(rangeConstraint) |> ignore
- | _ -> ()
-
-
- // Equality Constraints
- match (solverOptions.ConstraintMatrixEq, solverOptions.ConstraintVectorEq) with
- | (None, Some b) ->
- failwithf "Matrix for Equality Constraints undefined."
- | (Some mat, Some vec) ->
- for row = 0 to (vec.Length-1) do
- // generate constraint operands based on indices
- let constraintOperands = List.map (fun c -> vars.[c] * mat.[c].[row]) cols
- let linearExp = List.reduce (+) constraintOperands
-
- // create the constraint
- let equalityConstraint = RangeConstraint(linearExp, vec.[row], vec.[row])
- solver.Add(equalityConstraint) |> ignore
- | _ -> ()
-
- // Objective
- let objectiveOperands = List.map (fun c -> solverOptions.ObjectiveFunction.[c] * vars.[c]) cols
- let objectiveExp = List.reduce (+) objectiveOperands
-
- match solverOptions.SolverGoal with
- | Minimize ->
- solver.Minimize(objectiveExp)
- | Maximize ->
- solver.Maximize(objectiveExp)
-
- solver
-
- /// Solves the optimization problem and prints the results to console
- let SolverSummary (solver:Solver) =
- let resultStatus = solver.Solve();
-
- match resultStatus with
- | status when status <> Solver.OPTIMAL ->
- printfn "The problem does not have an optimal solution!"
- exit 0
- | _ ->
- printfn "\nProblem solved in %d milliseconds" (solver.WallTime())
- printfn "Iterations: %i\n" (solver.Iterations())
-
- printfn "Objective: %f" (solver.Objective().Value())
- for i in 0 .. (solver.NumVariables()-1) do
- printfn "%-10s: %f " (sprintf "var[%i]" i) ((solver.LookupVariableOrNull(sprintf "var[%i]" i)).SolutionValue())
-
- solver
-
diff --git a/ortools/fsharp/README.md b/ortools/fsharp/README.md
deleted file mode 100644
index 83b1c4f283..0000000000
--- a/ortools/fsharp/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Google OrTools - F#
-
-## Pre-requisites
-- dotnet core 2.0
-- Mono framework 5.4+
-
-## Compiling a standalone binary
-
-Use the makefile found in the root folder.
-```shell
-make fsharp
-```
-To see the targets type `make help_fsharp`. Note that a keyfile must exist in the `bin` folder as it will be used to sign the assembly.
-
-## Building Nuget package
-Ensure nuget executable is installed and then from root folder run the following:
-```shell
-make nuget-pkg_fsharp
-```
-The output package will include the FSharp binary and examples. It contains binaries for `netstandard2.0` metaframework and `net462`. If using the NETstandard binary you'll need to include a reference in the example to that library on your local system.
diff --git a/ortools/fsharp/netfx.props b/ortools/fsharp/netfx.props
deleted file mode 100644
index 7a0f31765a..0000000000
--- a/ortools/fsharp/netfx.props
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
- true
-
-
- /Library/Frameworks/Mono.framework/Versions/Current/lib/mono
- /usr/lib/mono
- /usr/local/lib/mono
-
-
- $(BaseFrameworkPathOverrideForMono)/4.5-api
- $(BaseFrameworkPathOverrideForMono)/4.5.1-api
- $(BaseFrameworkPathOverrideForMono)/4.5.2-api
- $(BaseFrameworkPathOverrideForMono)/4.6-api
- $(BaseFrameworkPathOverrideForMono)/4.6.1-api
- $(BaseFrameworkPathOverrideForMono)/4.6.2-api
- $(BaseFrameworkPathOverrideForMono)/4.7-api
- $(BaseFrameworkPathOverrideForMono)/4.7.1-api
- true
-
-
- $(FrameworkPathOverride)/Facades;$(AssemblySearchPaths)
-
-
\ No newline at end of file