Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Target Netstandard 2.0 #314

Merged
merged 15 commits into from
Nov 18, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,13 @@ language: csharp
mono:
- latest

addons:
apt:
packages:
- libunwind8

script:
- ./build.sh Build
- ./build.sh BuildTestProjects

install:
- export FrameworkPathOverride=$(dirname $(which mono))/../lib/mono/4.5/
3 changes: 3 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
#### 2.0.1-alpha November 11, 2018
* Add netstandard2.0 target

#### 1.8.6 - June 2, 2018
* Issue #303 Enable typed data table constructor to initialize an empty datatable with the expected columns

Expand Down
18 changes: 15 additions & 3 deletions SqlClient.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2041
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{FD7933BD-2A90-49EB-A4B2-95F9D3076BBD}"
ProjectSection(SolutionItems) = preProject
Expand Down Expand Up @@ -51,7 +51,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{
docs\tools\templates\template.cshtml = docs\tools\templates\template.cshtml
EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SqlClient", "src\SqlClient\SqlClient.fsproj", "{8974CE2E-79B4-4887-859A-B853C2624138}"
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.DesignTime", "src\SqlClient.DesignTime\SqlClient.DesignTime.fsproj", "{8974CE2E-79B4-4887-859A-B853C2624138}"
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient", "src\SqlClient\SqlClient.fsproj", "{30BA2514-534A-42EA-A0E7-46DF9FDCA954}"
ProjectSection(ProjectDependencies) = postProject
{8974CE2E-79B4-4887-859A-B853C2624138} = {8974CE2E-79B4-4887-859A-B853C2624138}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -63,6 +68,10 @@ Global
{8974CE2E-79B4-4887-859A-B853C2624138}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8974CE2E-79B4-4887-859A-B853C2624138}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8974CE2E-79B4-4887-859A-B853C2624138}.Release|Any CPU.Build.0 = Release|Any CPU
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -72,4 +81,7 @@ Global
{573DBBFB-0F97-4327-8614-6A4151CD70BF} = {61AC061E-5824-41B7-8E09-8D3A73D564E5}
{CB79269B-025B-4D6A-AF84-0AD821F6A602} = {573DBBFB-0F97-4327-8614-6A4151CD70BF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {82096CC6-31F2-47A5-8D46-E41C63B4DB58}
EndGlobalSection
EndGlobal
42 changes: 42 additions & 0 deletions TestProjects.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2041
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{E35ED000-5A6C-49E1-82CF-55CB8C16C2AB}"
ProjectSection(SolutionItems) = preProject
paket.dependencies = paket.dependencies
EndProjectSection
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Lib", "src\SqlClient.TestProjects\Lib\Lib.fsproj", "{5DD83156-9416-439F-983A-8ED1A0F1F822}"
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.Tests.NET40", "src\SqlClient.TestProjects\SqlClient.Tests.NET40\SqlClient.Tests.NET40.fsproj", "{34413B8D-884B-4F4D-B6DC-637FAE859738}"
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.Tests.NetCoreApp", "src\SqlClient.TestProjects\SqlClient.Tests.NetCoreApp\SqlClient.Tests.NetCoreApp.fsproj", "{251C7367-0556-4831-BE20-CAF29989B833}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Release|Any CPU.Build.0 = Release|Any CPU
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Release|Any CPU.Build.0 = Release|Any CPU
{251C7367-0556-4831-BE20-CAF29989B833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{251C7367-0556-4831-BE20-CAF29989B833}.Debug|Any CPU.Build.0 = Debug|Any CPU
{251C7367-0556-4831-BE20-CAF29989B833}.Release|Any CPU.ActiveCfg = Release|Any CPU
{251C7367-0556-4831-BE20-CAF29989B833}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB177D8C-41D5-430D-94E8-485567A72F92}
EndGlobalSection
EndGlobal
37 changes: 20 additions & 17 deletions Tests.sln
Original file line number Diff line number Diff line change
@@ -1,39 +1,42 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2041
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{E35ED000-5A6C-49E1-82CF-55CB8C16C2AB}"
ProjectSection(SolutionItems) = preProject
paket.dependencies = paket.dependencies
EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SqlClient.Tests", "src\SqlClient.Tests\SqlClient.Tests.fsproj", "{624C31FF-2003-4334-B02E-AD5A79FE9ED8}"
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.Tests", "tests\SqlClient.Tests\SqlClient.Tests.fsproj", "{36665EFF-56A2-46C2-852D-6D26DF492D79}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SqlClient.Tests.NET40", "src\SqlClient.Tests\SqlClient.Tests.NET40\SqlClient.Tests.NET40.fsproj", "{DE2EC181-0452-415D-82C3-1D43168D4FF1}"
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.DesignTime.Tests", "tests\SqlClient.DesignTime.Tests\SqlClient.DesignTime.Tests.fsproj", "{167862B2-5588-4DF8-A7D3-05C1A5A835CA}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Lib", "src\SqlClient.Tests\Lib\Lib.fsproj", "{17EE08F0-CE4C-4C17-A376-157249C9ABC2}"
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.SqlServerTypes.Tests", "tests\SqlClient.SqlServerTypes.Tests\SqlClient.SqlServerTypes.Tests.fsproj", "{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Release|Any CPU.Build.0 = Release|Any CPU
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Release|Any CPU.Build.0 = Release|Any CPU
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Release|Any CPU.Build.0 = Release|Any CPU
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Debug|Any CPU.Build.0 = Debug|Any CPU
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Release|Any CPU.ActiveCfg = Release|Any CPU
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Release|Any CPU.Build.0 = Release|Any CPU
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Release|Any CPU.Build.0 = Release|Any CPU
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB177D8C-41D5-430D-94E8-485567A72F92}
EndGlobalSection
EndGlobal
3 changes: 2 additions & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
init:
- git config --global core.autocrlf input
image: Visual Studio 2017
build_script:
- cmd: build.cmd GenerateDocs
test: off
Expand All @@ -8,4 +9,4 @@ artifacts:
- path: bin
name: bin
services:
- mssql2012sp1
- mssql2014
79 changes: 54 additions & 25 deletions build.fsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
open Fake.DotNet
// --------------------------------------------------------------------------------------
// FAKE build script
// --------------------------------------------------------------------------------------
Expand Down Expand Up @@ -25,6 +26,7 @@ let files includes =

// Information about the project to be used at NuGet and in AssemblyInfo files
let project = "FSharp.Data.SqlClient"
let designTimeProject = "FSharp.Data.SqlClient.DesignTime"
let authors = ["Dmitry Morozov, Dmitry Sevastianov"]
let summary = "SqlClient F# type providers"
let description = "SqlCommandProvider provides statically typed access to input parameters and result set of T-SQL command in idiomatic F# way.\nSqlProgrammabilityProvider exposes Stored Procedures, User-Defined Types and User-Defined Functions in F# code."
Expand All @@ -40,7 +42,9 @@ let release =

let version = release.AssemblyVersion
let releaseNotes = release.Notes |> String.concat "\n"
let testDir = "bin"

let install = lazy DotNet.install DotNet.Versions.Release_2_1_402
let inline dnDefault arg = DotNet.Options.lift install.Value arg

// --------------------------------------------------------------------------------------
// Generate assembly info files with the right version & up-to-date information
Expand All @@ -55,24 +59,44 @@ Target.create "AssemblyInfo" (fun _ ->
AssemblyInfo.Version version
AssemblyInfo.FileVersion version
AssemblyInfo.InternalsVisibleTo "SqlClient.Tests" ] )

[ "src/SqlClient.DesignTime/AssemblyInfo.fs", "SqlClient.DesignTime", designTimeProject, summary ]
|> Seq.iter (fun (fileName, title, project, summary) ->
AssemblyInfoFile.createFSharp fileName
[ AssemblyInfo.Title title
AssemblyInfo.Product project
AssemblyInfo.Description summary
AssemblyInfo.Version version
AssemblyInfo.FileVersion version
AssemblyInfo.InternalsVisibleTo "SqlClient.Tests" ] )
)

let slnPath = "SqlClient.sln"
let testProjectsSlnPath = "TestProjects.sln"
let testSlnPath = "Tests.sln"
let testProjectPath = "tests/SqlClient.Tests/SqlClient.Tests.fsproj"

Target.create "Clean" (fun _ ->
Shell.cleanDirs ["bin"; "temp"]
DotNet.exec dnDefault "clean" slnPath |> ignore
DotNet.exec dnDefault "clean" testProjectsSlnPath |> ignore
DotNet.exec dnDefault "clean" testSlnPath |> ignore
)

Target.create "CleanDocs" (fun _ ->
Shell.cleanDirs ["docs/output"]
)

// --------------------------------------------------------------------------------------
// Build library (builds Visual Studio solution, which builds multiple versions
// of the runtime library & desktop + Silverlight version of design time library)

Target.create "Build" (fun _ ->
files (["SqlClient.sln"])
|> MSBuild.runRelease id "" "Rebuild"
|> ignore
DotNet.build
(fun args ->
{
args with
Configuration = DotNet.Release
//Common = { args.Common with Verbosity = Some DotNet.Verbosity.Detailed }
} |> dnDefault)
slnPath

)

#r "System.Data"
Expand All @@ -86,7 +110,7 @@ open System.Configuration
open System.IO.Compression

Target.create "DeployTestDB" (fun _ ->
let testsSourceRoot = Path.GetFullPath(@"src\SqlClient.Tests")
let testsSourceRoot = Path.GetFullPath(@"tests\SqlClient.Tests")
let map = ExeConfigurationFileMap()
map.ExeConfigFilename <- testsSourceRoot @@ "app.config"
let connStr =
Expand Down Expand Up @@ -140,23 +164,29 @@ Target.create "DeployTestDB" (fun _ ->
cmd.ExecuteNonQuery() |> ignore
)

Target.create "BuildTests" (fun _ ->
files ["Tests.sln"]
|> MSBuild.runReleaseExt id "" ([]) "Rebuild"
|> ignore
Target.create "BuildTestProjects" (fun _ ->
DotNet.build
(fun args ->
{
args with
Configuration = DotNet.Release
//Common = { args.Common with Verbosity = Some DotNet.Verbosity.Detailed }
} |> dnDefault)
testProjectsSlnPath
)

// --------------------------------------------------------------------------------------
// Run the unit tests
Target.create "RunTests" (fun _ ->
!! (testDir + "/*.Tests.dll")
|> Fake.XUnitHelper.xUnit (fun p ->
{p with
ShadowCopy = false
HtmlOutput = true
XmlOutput = true
WorkingDir = testDir
})
Target.create "RunTests" (fun _ ->
// if we don't compile the targets sequentially, we get an error with the generated types:
// System.IO.IOException: The process cannot access the file 'C:\Users\foo\AppData\Local\Temp\tmpF38.dll' because it is being used by another process.
try
DotNet.test (fun args -> { args with Framework = Some "net461"; Common = args.Common |> dnDefault }) testSlnPath
DotNet.test (fun args -> { args with Framework = Some "netcoreapp2.0"; Common = args.Common |> dnDefault }) testProjectPath
with
| ex ->
Trace.log (sprintf "Test exception: %A" ex)
raise ex
)

// --------------------------------------------------------------------------------------
Expand Down Expand Up @@ -219,8 +249,8 @@ open Fake.Core.TargetOperators // for ==>
"Clean"
==> "AssemblyInfo"
==> "Build"
==> "DeployTestDB"
==> "BuildTests"
==> "BuildTestProjects"
==> "DeployTestDB"
==> "RunTests"
==> "All"

Expand All @@ -234,4 +264,3 @@ open Fake.Core.TargetOperators // for ==>
==> "ReleaseDocs"

Target.runOrDefault "All"

2 changes: 1 addition & 1 deletion docs/tools/generate.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Fake.Core.Context.setExecutionContext (Fake.Core.Context.RuntimeContext.Fake exe
let root = "."

// Paths with template/source/output locations
let bin = __SOURCE_DIRECTORY__ @@ "../../bin"
let bin = __SOURCE_DIRECTORY__ @@ "../../bin/net40"
let content = __SOURCE_DIRECTORY__ @@ "../content"
let output = __SOURCE_DIRECTORY__ @@ "../output"
let files = __SOURCE_DIRECTORY__ @@ "../files"
Expand Down
37 changes: 37 additions & 0 deletions fsc.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<!-- Type providers currently can't run inside the .NET Core 2.0 hosted compiler, see https://github.com/Microsoft/visualfsharp/pull/3658#issuecomment-334773415 -->
<PropertyGroup>
<IsWindows Condition="'$(OS)' == 'Windows_NT'">true</IsWindows>
<IsOSX Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'">true</IsOSX>
<IsLinux Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true'">true</IsLinux>
</PropertyGroup>
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsc.exe')">
<FscToolPath>C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0</FscToolPath>
<FscToolExe>fsc.exe</FscToolExe>
</PropertyGroup>
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe')">
<FscToolPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\FSharp</FscToolPath>
<FscToolExe>fsc.exe</FscToolExe>
</PropertyGroup>
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe')">
<FscToolPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\FSharp</FscToolPath>
<FscToolExe>fsc.exe</FscToolExe>
</PropertyGroup>
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe')">
<FscToolPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp</FscToolPath>
<FscToolExe>fsc.exe</FscToolExe>
</PropertyGroup>
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft SDKs\F#\10.1\Framework\v4.0\fsc.exe')">
<FscToolPath>C:\Program Files (x86)\Microsoft SDKs\F#\10.1\Framework\v4.0</FscToolPath>
<FscToolExe>fsc.exe</FscToolExe>
</PropertyGroup>
<PropertyGroup Condition="'$(IsOSX)' == 'true' AND Exists('/Library/Frameworks/Mono.framework/Versions/Current/Commands/fsharpc')">
<FscToolPath>/Library/Frameworks/Mono.framework/Versions/Current/Commands</FscToolPath>
<FscToolExe>fsharpc</FscToolExe>
</PropertyGroup>
<PropertyGroup Condition="'$(IsLinux)' == 'true' AND Exists('/usr/bin/fsharpc')">
<FscToolPath>/usr/bin</FscToolPath>
<FscToolExe>fsharpc</FscToolExe>
</PropertyGroup>
</Project>
Loading