Closed KevinRansom closed 7 years ago
@KevinRansom can you please update your post to the actually used properties? It makes an already complex topic slightly more confusing. =)
e.g. https://github.com/Microsoft/visualfsharp/issues/3335#issuecomment-315545434
From what I can see it is
TargetFSharpCorePackageVersion => FSharpCoreImplicitPackageVersion
DisableAutoFSharpCoreReference => DisableImplicitFSharpCoreReference
DisableAutoValueTupleReference => DisableImplicitSystemValueTupleReference
@0x53A Sorry for the delay here - I will update the post and the RFC with @KevinRansom later today
I adjusted the issue text, and am closing this because all the content is captured in the RFC (which I have also updated here and there in #226 )
https://github.com/fsharp/fslang-design/blob/master/tooling/FST-1002-fsharp-in-dotnet-sdk.md
The basic template for a console app looks like:
Modify the TargetFramework tag to deal with different frameworks: valid values include but are not limited to:
TargetFrameworks The dotnetsdk allows a project to produce multiple targets use the target frameworks tag
Notes: Portable Libraries: TBD: currently the SDK doesn't support portable library targets. Use the legacy project format for these. Really unfortunately in FSharp.Core we rely on some APIs that require high versions of netstandard (1.6) -- so we will probably have to produce a new netstandard version of FSharp.Core for portability ... probably netstandard 1.3.
System.ValueTuple Reference It is not necessary to include System.ValueTuple reference. Thje reason is that a package reference is automagically added during the build.
This is valuable because System.ValueTuple is kind of confusing ...
You need to reference it for net45,net46, net461, net462, net47 and coreapp1.+ and netstandard 1.6. You don't need to reference it for net471 and up or netcoreapp 2.+ or netstandard2.+.
net47 is the most vexing, because the full desktop framework contains the type but the reference assemblies do not contain the type forward.
DisableImplicitSystemValueTupleReference To disable this, because ... reasons ... Use the
DisableImplicitSystemValueTupleReference
property [true or false]FSharp.Core reference When building coreclr the framework automagically references the FSharp.Core using a wild card Currently: 1.0.0- Once we have a netcore2.0 fsharp.core package it will likely change to 1.0.0- for netcoreapp1.+ and netstandard1+ and 2.0.0-* for netcoreapp2+ etc.
DisableImplicitFSharpCoreReference To disable automagic fsharp.core reference use the
DisableImplicitFSharpCoreReference
property [true or false]FSharpCoreImplicitPackageVersion To change the package version set: the
FSharpCoreImplicitPackageVersion
to a specific value.TargetFSharpCorePackageIdentity To use a different nuget package for FSharp.Core.dll use the
TargetFSharpCorePackageIdentity
property.TargetFSharpCoreVersion For desktop versions, E.g. those who want to target FSharp.Core.4.3.0.0 e.t.c use the
TargetFSharpCoreVersion
property. This has no effect on netstandard or netcoreapp target builds.These proposals are implemented within the VisualFSharp repo in targets we deploy with the compiler, and so will not require coordination with the cli or sdk to implement.
The source files can be found here: https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.props and here: https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.targets
A console app targeting multiple frameworks and the 4.4.0.0 fsharp.core
I hope this is satisfactory
Kevin