Skip to content

Commit dabf2cb

Browse files
Merge pull request #314 from samhanes/netstandard
Target Netstandard 2.0
2 parents bac5ede + 4b2c61e commit dabf2cb

File tree

116 files changed

+2376
-3470
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+2376
-3470
lines changed

.travis.yml

+9-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,13 @@ language: csharp
33
mono:
44
- latest
55

6+
addons:
7+
apt:
8+
packages:
9+
- libunwind8
10+
611
script:
7-
- ./build.sh Build
12+
- ./build.sh BuildTestProjects
13+
14+
install:
15+
- export FrameworkPathOverride=$(dirname $(which mono))/../lib/mono/4.5/

RELEASE_NOTES.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#### 2.0.1-alpha November 11, 2018
2+
* Add netstandard2.0 target
3+
14
#### 1.8.6 - June 2, 2018
25
* Issue #303 Enable typed data table constructor to initialize an empty datatable with the expected columns
36

SqlClient.sln

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.24720.0
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28010.2041
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{FD7933BD-2A90-49EB-A4B2-95F9D3076BBD}"
77
ProjectSection(SolutionItems) = preProject
@@ -51,7 +51,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{
5151
docs\tools\templates\template.cshtml = docs\tools\templates\template.cshtml
5252
EndProjectSection
5353
EndProject
54-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SqlClient", "src\SqlClient\SqlClient.fsproj", "{8974CE2E-79B4-4887-859A-B853C2624138}"
54+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.DesignTime", "src\SqlClient.DesignTime\SqlClient.DesignTime.fsproj", "{8974CE2E-79B4-4887-859A-B853C2624138}"
55+
EndProject
56+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient", "src\SqlClient\SqlClient.fsproj", "{30BA2514-534A-42EA-A0E7-46DF9FDCA954}"
57+
ProjectSection(ProjectDependencies) = postProject
58+
{8974CE2E-79B4-4887-859A-B853C2624138} = {8974CE2E-79B4-4887-859A-B853C2624138}
59+
EndProjectSection
5560
EndProject
5661
Global
5762
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -63,6 +68,10 @@ Global
6368
{8974CE2E-79B4-4887-859A-B853C2624138}.Debug|Any CPU.Build.0 = Debug|Any CPU
6469
{8974CE2E-79B4-4887-859A-B853C2624138}.Release|Any CPU.ActiveCfg = Release|Any CPU
6570
{8974CE2E-79B4-4887-859A-B853C2624138}.Release|Any CPU.Build.0 = Release|Any CPU
71+
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72+
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Debug|Any CPU.Build.0 = Debug|Any CPU
73+
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Release|Any CPU.ActiveCfg = Release|Any CPU
74+
{30BA2514-534A-42EA-A0E7-46DF9FDCA954}.Release|Any CPU.Build.0 = Release|Any CPU
6675
EndGlobalSection
6776
GlobalSection(SolutionProperties) = preSolution
6877
HideSolutionNode = FALSE
@@ -72,4 +81,7 @@ Global
7281
{573DBBFB-0F97-4327-8614-6A4151CD70BF} = {61AC061E-5824-41B7-8E09-8D3A73D564E5}
7382
{CB79269B-025B-4D6A-AF84-0AD821F6A602} = {573DBBFB-0F97-4327-8614-6A4151CD70BF}
7483
EndGlobalSection
84+
GlobalSection(ExtensibilityGlobals) = postSolution
85+
SolutionGuid = {82096CC6-31F2-47A5-8D46-E41C63B4DB58}
86+
EndGlobalSection
7587
EndGlobal

TestProjects.sln

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28010.2041
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{E35ED000-5A6C-49E1-82CF-55CB8C16C2AB}"
7+
ProjectSection(SolutionItems) = preProject
8+
paket.dependencies = paket.dependencies
9+
EndProjectSection
10+
EndProject
11+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Lib", "src\SqlClient.TestProjects\Lib\Lib.fsproj", "{5DD83156-9416-439F-983A-8ED1A0F1F822}"
12+
EndProject
13+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.Tests.NET40", "src\SqlClient.TestProjects\SqlClient.Tests.NET40\SqlClient.Tests.NET40.fsproj", "{34413B8D-884B-4F4D-B6DC-637FAE859738}"
14+
EndProject
15+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.Tests.NetCoreApp", "src\SqlClient.TestProjects\SqlClient.Tests.NetCoreApp\SqlClient.Tests.NetCoreApp.fsproj", "{251C7367-0556-4831-BE20-CAF29989B833}"
16+
EndProject
17+
Global
18+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
19+
Debug|Any CPU = Debug|Any CPU
20+
Release|Any CPU = Release|Any CPU
21+
EndGlobalSection
22+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
23+
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24+
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Debug|Any CPU.Build.0 = Debug|Any CPU
25+
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Release|Any CPU.ActiveCfg = Release|Any CPU
26+
{5DD83156-9416-439F-983A-8ED1A0F1F822}.Release|Any CPU.Build.0 = Release|Any CPU
27+
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28+
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Debug|Any CPU.Build.0 = Debug|Any CPU
29+
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Release|Any CPU.ActiveCfg = Release|Any CPU
30+
{34413B8D-884B-4F4D-B6DC-637FAE859738}.Release|Any CPU.Build.0 = Release|Any CPU
31+
{251C7367-0556-4831-BE20-CAF29989B833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32+
{251C7367-0556-4831-BE20-CAF29989B833}.Debug|Any CPU.Build.0 = Debug|Any CPU
33+
{251C7367-0556-4831-BE20-CAF29989B833}.Release|Any CPU.ActiveCfg = Release|Any CPU
34+
{251C7367-0556-4831-BE20-CAF29989B833}.Release|Any CPU.Build.0 = Release|Any CPU
35+
EndGlobalSection
36+
GlobalSection(SolutionProperties) = preSolution
37+
HideSolutionNode = FALSE
38+
EndGlobalSection
39+
GlobalSection(ExtensibilityGlobals) = postSolution
40+
SolutionGuid = {BB177D8C-41D5-430D-94E8-485567A72F92}
41+
EndGlobalSection
42+
EndGlobal

Tests.sln

+20-17
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,42 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 14
4-
VisualStudioVersion = 14.0.25420.1
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.28010.2041
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{E35ED000-5A6C-49E1-82CF-55CB8C16C2AB}"
77
ProjectSection(SolutionItems) = preProject
88
paket.dependencies = paket.dependencies
99
EndProjectSection
1010
EndProject
11-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SqlClient.Tests", "src\SqlClient.Tests\SqlClient.Tests.fsproj", "{624C31FF-2003-4334-B02E-AD5A79FE9ED8}"
11+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.Tests", "tests\SqlClient.Tests\SqlClient.Tests.fsproj", "{36665EFF-56A2-46C2-852D-6D26DF492D79}"
1212
EndProject
13-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "SqlClient.Tests.NET40", "src\SqlClient.Tests\SqlClient.Tests.NET40\SqlClient.Tests.NET40.fsproj", "{DE2EC181-0452-415D-82C3-1D43168D4FF1}"
13+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.DesignTime.Tests", "tests\SqlClient.DesignTime.Tests\SqlClient.DesignTime.Tests.fsproj", "{167862B2-5588-4DF8-A7D3-05C1A5A835CA}"
1414
EndProject
15-
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Lib", "src\SqlClient.Tests\Lib\Lib.fsproj", "{17EE08F0-CE4C-4C17-A376-157249C9ABC2}"
15+
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "SqlClient.SqlServerTypes.Tests", "tests\SqlClient.SqlServerTypes.Tests\SqlClient.SqlServerTypes.Tests.fsproj", "{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}"
1616
EndProject
1717
Global
1818
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1919
Debug|Any CPU = Debug|Any CPU
2020
Release|Any CPU = Release|Any CPU
2121
EndGlobalSection
2222
GlobalSection(ProjectConfigurationPlatforms) = postSolution
23-
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24-
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU
25-
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU
26-
{624C31FF-2003-4334-B02E-AD5A79FE9ED8}.Release|Any CPU.Build.0 = Release|Any CPU
27-
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28-
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
29-
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
30-
{DE2EC181-0452-415D-82C3-1D43168D4FF1}.Release|Any CPU.Build.0 = Release|Any CPU
31-
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32-
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
33-
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
34-
{17EE08F0-CE4C-4C17-A376-157249C9ABC2}.Release|Any CPU.Build.0 = Release|Any CPU
23+
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24+
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Debug|Any CPU.Build.0 = Debug|Any CPU
25+
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Release|Any CPU.ActiveCfg = Release|Any CPU
26+
{36665EFF-56A2-46C2-852D-6D26DF492D79}.Release|Any CPU.Build.0 = Release|Any CPU
27+
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28+
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
29+
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
30+
{167862B2-5588-4DF8-A7D3-05C1A5A835CA}.Release|Any CPU.Build.0 = Release|Any CPU
31+
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32+
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Debug|Any CPU.Build.0 = Debug|Any CPU
33+
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Release|Any CPU.ActiveCfg = Release|Any CPU
34+
{CF3D9433-B20A-4E5A-9401-F6518CBAD34E}.Release|Any CPU.Build.0 = Release|Any CPU
3535
EndGlobalSection
3636
GlobalSection(SolutionProperties) = preSolution
3737
HideSolutionNode = FALSE
3838
EndGlobalSection
39+
GlobalSection(ExtensibilityGlobals) = postSolution
40+
SolutionGuid = {BB177D8C-41D5-430D-94E8-485567A72F92}
41+
EndGlobalSection
3942
EndGlobal

appveyor.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
init:
22
- git config --global core.autocrlf input
3+
image: Visual Studio 2017
34
build_script:
45
- cmd: build.cmd GenerateDocs
56
test: off
@@ -8,4 +9,4 @@ artifacts:
89
- path: bin
910
name: bin
1011
services:
11-
- mssql2012sp1
12+
- mssql2014

build.fsx

+54-25
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
open Fake.DotNet
12
// --------------------------------------------------------------------------------------
23
// FAKE build script
34
// --------------------------------------------------------------------------------------
@@ -25,6 +26,7 @@ let files includes =
2526

2627
// Information about the project to be used at NuGet and in AssemblyInfo files
2728
let project = "FSharp.Data.SqlClient"
29+
let designTimeProject = "FSharp.Data.SqlClient.DesignTime"
2830
let authors = ["Dmitry Morozov, Dmitry Sevastianov"]
2931
let summary = "SqlClient F# type providers"
3032
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."
@@ -40,7 +42,9 @@ let release =
4042

4143
let version = release.AssemblyVersion
4244
let releaseNotes = release.Notes |> String.concat "\n"
43-
let testDir = "bin"
45+
46+
let install = lazy DotNet.install DotNet.Versions.Release_2_1_402
47+
let inline dnDefault arg = DotNet.Options.lift install.Value arg
4448

4549
// --------------------------------------------------------------------------------------
4650
// Generate assembly info files with the right version & up-to-date information
@@ -55,24 +59,44 @@ Target.create "AssemblyInfo" (fun _ ->
5559
AssemblyInfo.Version version
5660
AssemblyInfo.FileVersion version
5761
AssemblyInfo.InternalsVisibleTo "SqlClient.Tests" ] )
62+
63+
[ "src/SqlClient.DesignTime/AssemblyInfo.fs", "SqlClient.DesignTime", designTimeProject, summary ]
64+
|> Seq.iter (fun (fileName, title, project, summary) ->
65+
AssemblyInfoFile.createFSharp fileName
66+
[ AssemblyInfo.Title title
67+
AssemblyInfo.Product project
68+
AssemblyInfo.Description summary
69+
AssemblyInfo.Version version
70+
AssemblyInfo.FileVersion version
71+
AssemblyInfo.InternalsVisibleTo "SqlClient.Tests" ] )
5872
)
5973

74+
let slnPath = "SqlClient.sln"
75+
let testProjectsSlnPath = "TestProjects.sln"
76+
let testSlnPath = "Tests.sln"
77+
let testProjectPath = "tests/SqlClient.Tests/SqlClient.Tests.fsproj"
78+
6079
Target.create "Clean" (fun _ ->
6180
Shell.cleanDirs ["bin"; "temp"]
81+
DotNet.exec dnDefault "clean" slnPath |> ignore
82+
DotNet.exec dnDefault "clean" testProjectsSlnPath |> ignore
83+
DotNet.exec dnDefault "clean" testSlnPath |> ignore
6284
)
6385

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

68-
// --------------------------------------------------------------------------------------
69-
// Build library (builds Visual Studio solution, which builds multiple versions
70-
// of the runtime library & desktop + Silverlight version of design time library)
71-
7290
Target.create "Build" (fun _ ->
73-
files (["SqlClient.sln"])
74-
|> MSBuild.runRelease id "" "Rebuild"
75-
|> ignore
91+
DotNet.build
92+
(fun args ->
93+
{
94+
args with
95+
Configuration = DotNet.Release
96+
//Common = { args.Common with Verbosity = Some DotNet.Verbosity.Detailed }
97+
} |> dnDefault)
98+
slnPath
99+
76100
)
77101

78102
#r "System.Data"
@@ -86,7 +110,7 @@ open System.Configuration
86110
open System.IO.Compression
87111

88112
Target.create "DeployTestDB" (fun _ ->
89-
let testsSourceRoot = Path.GetFullPath(@"src\SqlClient.Tests")
113+
let testsSourceRoot = Path.GetFullPath(@"tests\SqlClient.Tests")
90114
let map = ExeConfigurationFileMap()
91115
map.ExeConfigFilename <- testsSourceRoot @@ "app.config"
92116
let connStr =
@@ -140,23 +164,29 @@ Target.create "DeployTestDB" (fun _ ->
140164
cmd.ExecuteNonQuery() |> ignore
141165
)
142166

143-
Target.create "BuildTests" (fun _ ->
144-
files ["Tests.sln"]
145-
|> MSBuild.runReleaseExt id "" ([]) "Rebuild"
146-
|> ignore
167+
Target.create "BuildTestProjects" (fun _ ->
168+
DotNet.build
169+
(fun args ->
170+
{
171+
args with
172+
Configuration = DotNet.Release
173+
//Common = { args.Common with Verbosity = Some DotNet.Verbosity.Detailed }
174+
} |> dnDefault)
175+
testProjectsSlnPath
147176
)
148177

149178
// --------------------------------------------------------------------------------------
150179
// Run the unit tests
151-
Target.create "RunTests" (fun _ ->
152-
!! (testDir + "/*.Tests.dll")
153-
|> Fake.XUnitHelper.xUnit (fun p ->
154-
{p with
155-
ShadowCopy = false
156-
HtmlOutput = true
157-
XmlOutput = true
158-
WorkingDir = testDir
159-
})
180+
Target.create "RunTests" (fun _ ->
181+
// if we don't compile the targets sequentially, we get an error with the generated types:
182+
// 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.
183+
try
184+
DotNet.test (fun args -> { args with Framework = Some "net461"; Common = args.Common |> dnDefault }) testSlnPath
185+
DotNet.test (fun args -> { args with Framework = Some "netcoreapp2.0"; Common = args.Common |> dnDefault }) testProjectPath
186+
with
187+
| ex ->
188+
Trace.log (sprintf "Test exception: %A" ex)
189+
raise ex
160190
)
161191

162192
// --------------------------------------------------------------------------------------
@@ -219,8 +249,8 @@ open Fake.Core.TargetOperators // for ==>
219249
"Clean"
220250
==> "AssemblyInfo"
221251
==> "Build"
222-
==> "DeployTestDB"
223-
==> "BuildTests"
252+
==> "BuildTestProjects"
253+
==> "DeployTestDB"
224254
==> "RunTests"
225255
==> "All"
226256

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

236266
Target.runOrDefault "All"
237-

docs/tools/generate.fsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Fake.Core.Context.setExecutionContext (Fake.Core.Context.RuntimeContext.Fake exe
3030
let root = "."
3131

3232
// Paths with template/source/output locations
33-
let bin = __SOURCE_DIRECTORY__ @@ "../../bin"
33+
let bin = __SOURCE_DIRECTORY__ @@ "../../bin/net40"
3434
let content = __SOURCE_DIRECTORY__ @@ "../content"
3535
let output = __SOURCE_DIRECTORY__ @@ "../output"
3636
let files = __SOURCE_DIRECTORY__ @@ "../files"

fsc.props

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project>
3+
<!-- Type providers currently can't run inside the .NET Core 2.0 hosted compiler, see https://github.com/Microsoft/visualfsharp/pull/3658#issuecomment-334773415 -->
4+
<PropertyGroup>
5+
<IsWindows Condition="'$(OS)' == 'Windows_NT'">true</IsWindows>
6+
<IsOSX Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'">true</IsOSX>
7+
<IsLinux Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true'">true</IsLinux>
8+
</PropertyGroup>
9+
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsc.exe')">
10+
<FscToolPath>C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0</FscToolPath>
11+
<FscToolExe>fsc.exe</FscToolExe>
12+
</PropertyGroup>
13+
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe')">
14+
<FscToolPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\FSharp</FscToolPath>
15+
<FscToolExe>fsc.exe</FscToolExe>
16+
</PropertyGroup>
17+
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe')">
18+
<FscToolPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\FSharp</FscToolPath>
19+
<FscToolExe>fsc.exe</FscToolExe>
20+
</PropertyGroup>
21+
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp\fsc.exe')">
22+
<FscToolPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\FSharp</FscToolPath>
23+
<FscToolExe>fsc.exe</FscToolExe>
24+
</PropertyGroup>
25+
<PropertyGroup Condition="'$(IsWindows)' == 'true' AND Exists('C:\Program Files (x86)\Microsoft SDKs\F#\10.1\Framework\v4.0\fsc.exe')">
26+
<FscToolPath>C:\Program Files (x86)\Microsoft SDKs\F#\10.1\Framework\v4.0</FscToolPath>
27+
<FscToolExe>fsc.exe</FscToolExe>
28+
</PropertyGroup>
29+
<PropertyGroup Condition="'$(IsOSX)' == 'true' AND Exists('/Library/Frameworks/Mono.framework/Versions/Current/Commands/fsharpc')">
30+
<FscToolPath>/Library/Frameworks/Mono.framework/Versions/Current/Commands</FscToolPath>
31+
<FscToolExe>fsharpc</FscToolExe>
32+
</PropertyGroup>
33+
<PropertyGroup Condition="'$(IsLinux)' == 'true' AND Exists('/usr/bin/fsharpc')">
34+
<FscToolPath>/usr/bin</FscToolPath>
35+
<FscToolExe>fsharpc</FscToolExe>
36+
</PropertyGroup>
37+
</Project>

0 commit comments

Comments
 (0)