News

F# Now Targets .NET Core Projects in Visual Studio

Microsoft's F# functional programming language now lets Visual Studio coders target .NET Core and .NET Standard projects.

That functionality is found in the latest preview release of the flagship IDE, Visual Studio 2017 15.5 Preview 4. While other previews have included the beginnings of F# support for .NET Core and .NET Standard projects, some important work items were just finished off in the latest preview, prompting Microsoft's announcement.

F# support is now built in to any Visual Studio projects based on the .NET Core SDK, including .NET Core, .NET Standard and .NET Framework projects. Now, in Visual Studio, .NET Core workloads, ASP.NET workloads and Azure workloads all feature default F# support.

In August, Microsoft released .NET Core 2.0 -- an open source, modular implementation of .NET -- and .NET Standard 2.0, which provides a common set of APIs that all .NET-based projects must implement for consistent API usage.

Since then, various Microsoft and third-party offerings have been catching up to support the initiatives, with F# among the latest.

 F Sharp Support by Default
[Click on image for larger view.] F# Support by Default (source: Microsoft).

F# developers who install the aforementioned workloads can now use the File | New Project menu to create new projects based on .NET Core and .NET Standard, though as of now support is limited to console apps, libraries and unit test projects.

In a blog post, Microsoft outlined some of the new features associated with the updated project support:

  • Project files are significantly smaller, often by an order of magnitude.
  • Project files are editable without having to unload the project.
  • Coders can edit a project file (for example, adding a package) and when it's saved, the project system will automatically react to those changes (such as restoring an added package).
  • NuGet dependencies, the SDK reference and project-to-project references are unified under the Dependencies node.

For the F#/.NET Core development roadmap going forward, Microsoft listed these issues remaining to be tackled:

  • After creating a new project-to-project reference, the Error List in Visual Studio can show errors, even though developers get IntelliSense and their projects build. Developers can close/reopen documents for the errors to go away.
  • Solution Explorer does not show the compilation order of files after developers first add them and move them in the project file. If developers reload a project, ordering will be shown correctly.
  • Folder support is limited -- all folders are rendered above files in the root directory of a project. Microsoft will work out a design on how to handle this gracefully with file ordering in mind.
  • C# libraries must first be built before their symbols are visible in F# projects.
  • F# and ASP.NET Core templates are not yet available in the File | New project dialog.
  • Microsoft will continue improving its cross-platform debugging support, specifically in Portable PDB generation.
  • Performance of solution loading and cross-project IDE features in large .NET Core/.NET Standard solutions is still a place where major investments are being made by the team that owns the underlying project system F# uses for these project types. F# will benefit from all of these investments.
  • Type Provider support for .NET Core is arriving towards a design that will enable quality support on .NET Standard and .NET Core. This redesign will involve changes to Type Provider libraries.
  • Microsoft will soon begin work on enabling F# Interactive for .NET Core. This will be nontrivial work, so there's no estimated date of completion yet.
  • There are no Visual Studio templates for F# Azure Functions yet. The F#/.NET team is going to work with the Azure Functions team to ensure that F# templates for different Function types will be in a forthcoming release.

"Finally, we are laying the groundwork for a long-term effort of migrating all F# projects to the new project system that .NET Core and .NET Standard projects use," Microsoft's Phillip Carter said in the blog post. "This will enable us to retire our current, F#-specific project system that .NET Framework projects use today. We'll first do this by 'dogfooding' our own codebase.

"There is no timeline for when this will happen, as it is a long-term effort, but it is a major goal of ours because it enables us to hand off project system concerns to experts in that space so that we can focus on the F# compiler and F# tooling."

Microsoft's repository for the open source F# language compiler, library and Visual F# tools can be found on GitHub.

About the Author

David Ramel is an editor and writer at Converge 360.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube