Type Providers and Codegen from Quotations are not supported due to changes made in reflection APIs for .NET Core. These will be in .NET Core 2.0+ timeframe.
.NET Core FSI works as a simple REPL
However, it does not support the .NET Core references model and thus does not support #r
Visual F# Tools in Visual Studio 2017 is sitting atop Roslyn Workspaces with many new features thanks to the OSS Community
It's much easier to add new features to the tooling now
Visual FSI window in Visual Studio 2017 is in good shape
Debugging is in good shape, with multiple areas of improvement
Support for Portable PDBs and Desktop PDBs on .NET Framework
Support for Portable PDBs on .NET Core
Support for Embedded Portable PDBs on .NET Framework and .NET Core
Support for embedded source code with Portable PDBs on .NET Framework and .NET Core
Points of significance:
Still no Expression Evaluator (EE) for F#, so that means many debugging features are still unavailable as they always have been
Regression when debugging F# Lists: the .Items property is not invoked by the Roslyn EE used in Visual Studio
No other regressions that we can find
Legacy EE will be going away
The Visual F# Tools project system does not support F# on .NET Core
The new .fsproj file does not load in VS
No project system support for package load, cross-platform build, or publish
No .NET Core templates in-box
This means you can create something with the .NET CLI and have it fail to load in Visual Studio
Lightweight Solution Load is not compatible with F# for VS 2017 release.
Build/Rebuild/Clean do not work
Text searching through any F# projects do not work either.
Immediate Roadmap for 2017
Bug fixes
Fixing tooling regressions in VS 2017 tooling
Fixing serious bugs in new features in VS 2017
Fixing serious bugs in the compiler
Stability
It’s crucially important that we get our tooling stability up to spec. Many new features were introduced, but we didn’t increase our test coverage by much.
There is currently a bug on our side which prevents the Connected Services node in VS 2017 from working with F# projects.
Performance and memory-consumption issues
There were regressions here introduced in VS 2017 compared with VS 2015. It will be an ongoing battle to improve this, but we’ve already seen big improvements from Don just recently.
Build/Rebuild/Clean and Text Search do not work if Lightweight Solution Load is turned on. We’ll work with the team that owns this to get this fixed.
Migrate the OSS Build to the latest .NET CLI and MSBuild and use the Multilingual App Toolkit (MAT) for localization builds
Migrating OSS Build to latest .NET CLI and MSBuild is necessary for .NET Core 2.0 support, which is in turn necessary to get Type Providers, Quotation support, and #r support in F# for .NET Core
Using the MAT will also bring down our internal build times for signed binaries tremendously
Support generating signed VSIXs of the latest master build, pushed directly to MyGet
This will enable people to get on a “Fast track” for F# tooling in VS 2017, test out brand-new features, and provide feedback early on
The artifacts produced will come with the assumption that people know they won’t be as well-tested and may introduce regressions
Project System support for .NET Core and .NET Standard projects in F#
Ability to load MSBuild 15-based .fsproj projects
Add gestures for cross-platform builds, publish, and adding package references
Consideration: Roslyn Project System
Add F# support to the new project system that C# and VB use for .NET Core/Standard projects
Remove our own project system entirely, making us “first-class” in that regard
This is pending an investigation into the work involved
Full FSI support on .NET Core 2.0
Properly handle the model for how .dlls are laid out on disk with .NET Core, thus fixing #r
Establish a good working model for how to do the above
Prompt to re-load an FSI session when #r’ing an assembly that targets a higher target than what FSI was launched with?
Error message asking user to re-load FSI manually?
Try to re-target and re-reference everything on the fly?
Full support for F# on .NET Core 2.0 and .NET Standard 2.0
Type Providers and Code Quotations
This also takes a dependency on RefEmit. We’ll need to investigate this further, since it’s currently not on the .NET Core 2.0 roadmap
Build a Contract .dll between Roslyn and F# to remove our use of InternalsVisibleTo
This will allow Roslyn to determine when they break us if they make any breaking changes to their APIs
This will be a big improvement over the current situation, where we must manually check this
OSS Engineering Efficiency and Build needs some improvements
The .NET CLI does not use project.json anymore, but our OSS Build still relies on that
The .NET CLI uses MSBuild 15 and PackageReferences, which we need to support
Open Source Localization is needed to simplify our localization process and more easy leverage the OSS community
Using the Multilingual App Toolkit is a way to improve our internal process and reduce build times
In accordance with the above, what follows is where we expect work will come from. In the case of the OSS Community, while we don't assume work will be done for us, we anticipate continuing to receive high-quality contributions which we will gladly accept.
@KevinRansom
VS support for loading .NET Core 1.x projects in Visual Studio
This is an issue being addressed in the short-term
F# Compiler support for .NET Core 2.0
FSI support for .NET Core 2.0
Type Provider and Code Quotations support for .NET Standard 2.0
System.ValueTuple work to deal with its migration to mscorlib in .NET Framework 4.6.3
Helping with concrete work in evolving F# 4.2
Bug fixes in the compiler, PDBs, debugging, and platform support
@brettfo
Bug fixes in the VS Tooling
Addressing regressions and serious bugs in new features
Connected Services Node bug and other issues with VS features
Addressing the OSS Build
Getting our internal builds to a place where we can publish signed VSIXs for people to use
Addressing Localization
Using the Multilingual App Toolkit to reduce build times and remove our internal clone of this repo
Improve OSS Localization
Investigating F# support on the Roslyn Project system, and acting on that if it's deemed reasonable
Support the community
@cartermp
Blog post with a focus on OSS attribution for F# 4.1 and the Visual F# Tools in VS 2017
Outreach to internal teams to address issues that affect us
Support the community
Low-impact bug fixes, if possible
@dsyme and the F# OSS Community
F# 4.2 evolution
Additional IDE features and improvements
Performance improvements
Bug fixes (note: this does not mean that we are punting bug fixes to the community. It means we will accept any bug fixes from the community)
Roslyn Team
Helping us and the OSS community better understand Roslyn when working on features
Engaging with and helping unblock the OSS community
Current Status of F# and the Visual F# Tools per VS2017 RTM
struct
representation of types, a newResult
type, and other areas that are “nip and tuck” in nature#r
.Items
property is not invoked by the Roslyn EE used in Visual StudioImmediate Roadmap for 2017
Bug fixes
Stability
Migrate the OSS Build to the latest .NET CLI and MSBuild and use the Multilingual App Toolkit (MAT) for localization builds
Support generating signed VSIXs of the latest master build, pushed directly to MyGet
Project System support for .NET Core and .NET Standard projects in F#
Full FSI support on .NET Core 2.0
#r
#r
’ing an assembly that targets a higher target than what FSI was launched with?Full support for F# on .NET Core 2.0 and .NET Standard 2.0
Build a Contract .dll between Roslyn and F# to remove our use of InternalsVisibleTo
OSS Engineering Efficiency and Build needs some improvements
In accordance with the above, what follows is where we expect work will come from. In the case of the OSS Community, while we don't assume work will be done for us, we anticipate continuing to receive high-quality contributions which we will gladly accept.
@KevinRansom
System.ValueTuple
work to deal with its migration to mscorlib in .NET Framework 4.6.3@brettfo
@cartermp
@dsyme and the F# OSS Community
Roslyn Team