Fsharp: Visual Studio "15" still doesn't allow "on demand" install after opening a fsx file

Created on 5 Apr 2016  Â·  27Comments  Â·  Source: dotnet/fsharp

If you download the "classical" Visual Studio installer from https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx it allows you to install F# into VS.
Since it's not selected by default, a lot of our users will forget about it.

Since Visual Studio 2015 we have "on demand" installation of F# when you open a fsproj. This is still working with the latest installer, but opening a fsx file is still not triggering "on demand" install.
This is seriously hurting FAKE users. Before VS 2015 changed that install model FAKE always worked out of the box for all VS users (most FAKE users are C# devs).

Area-External Feature Request

Most helpful comment

I was under the impression that this was supposed to be fixed for the next release of Visual Studio.

All 27 comments

I was under the impression that this was supposed to be fixed for the next release of Visual Studio.

help

I'm sure this simply flew under the radar in the rush to release a preview.

TBH I _hoped_ this would come with one of the VS 2015 updates.

kidding1

kidding2

from @hmemcpy https://github.com/Microsoft/visualfsharp/issues/1039#issuecomment-206383648

Hmm, looks like this UI can be created with the IVsInfoBarUIEvents service (new in VS2015 and above). Now, what exactly is creating that specific message, I'm not sure. There's an extension by Mads Kristensen that suggests extensions based on the file type, and it shows a similar infobar... Do you have it installed?

ref https://github.com/madskristensen/SolutionExtensions

Powershell ( https://github.com/adamdriscoll/poshtools and https://github.com/Microsoft/poshtools ? )

/cc @madskristensen @adamdriscoll for info

I worked with a team at MSFT that got that put in there. I think it's in the form of a stub-extension or something. @bmoore-msft can confirm that and provide more details.

/cc: @AndreSayreMSFT

If C# and VB.NET are selected in default install, can we make F# part of the default?

AFAIK F# standalone package is about 50mb, I don't think this is the one hurting users with default install.

@smoothdeveloper i think a small (empty) vs installer is better, we can choose all extensions needed at install (or on demand). That's why the :-1:
Coupling between vs installer and f# extension make more difficult to send updates (see PTVS or NodeTools, are really easy to upgrade) and it hurt visualfsharp in the long term

That said, open fsx => ask for installing visualfsharp should be fixed.

@enricosada I should rephrase, F# should be in same selection state than C#/VB.NET.

I agree that lean installer is better, but there is going to be 2 install paths if I understood correctly, the lean one (demoed at //BUILD 2016) and the usual one, I think defaults for usual one should be fair to the 3 languages by having them in same selection state.

@smoothdeveloper C# and VB .NET are no longer included by the default install in the new "15" - you need to manually pick it.

@isaacabraham they are still the default in the "classic" .iso installation. F# is under "Custom", together with C++.

image

Yeah but IIRC I couldn't unselect in classical installer.
On Apr 7, 2016 6:53 PM, "Isaac Abraham" [email protected] wrote:

@smoothdeveloper https://github.com/smoothdeveloper C# and VB .NET are
no longer included by the default install in the new "15" - you need to
manually pick it.

—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/Microsoft/visualfsharp/issues/1040#issuecomment-206990914

Sry @forki , i think i hijacked the issue with my reply.

This fsx => ask install is important, let's use another issue but there was already a discussion in https://github.com/Microsoft/visualfsharp/issues/544

fsx old issue #702

Sorry about derailing this further, but I found something interesting. During loading of the iso installer, it pulls an xml feed from the internet. I did some Fiddler-ing, and this is the URL the installer requests:
http://download.microsoft.com/download/D/7/2/D72A2B9B-C7DD-4AE2-B703-EAB7D3CE1E39/20160325.1/enu/feed.xml

It looks like a layout file for the installer.

In theory, there should be no problem modifying this feed to "upgrade" FSharp to first class citizenship. Now this only need the "powers that be".

@hmemcpy I know. I was referring to the new installer - I thought I made that clear.

Let's be clear - I'm not complaining about the state of affairs. I'm just stating - in the ISO install things are basically as they are now. _Currently_ (and I'm sure that this will be sorted in the fullness of time - hopefully not too much time though) there's no option in the new lightweight installer.

@hmemcpy FWIW. I think (and this is just IMHO) some people are concerned that after what happened with VS2015 i.e. last minute changes to pull F# out of the standard install process post RC without telling anyone until after the fact - MS have to earn people's trust a little bit here, so I suspect that until people see it "in the flesh", there will be some skepticism regarding this. Whether that's justified or not I can't speak to.

@isaacabraham I think you are spot on, I want to add that with each release of VS, we see vast efforts to streamline or improve tremendously the .net users' workload, in the context of VB.NET and C#, but also more recent additions outside .net (typescript).

In the meantime, the perceivable improvements for Visual F# have been carried over solely by the core VIsual F# compiler team + F# open source community, obviously leaving a lot of area unaddressed.

Is the roslyn compiler team also brought to spend resources outside of core compiler (and roslyn workspace API) work to cover the extended footprint? I think in those case, the teams working on individual features (compile to native, lean install of VS, etc.) rather than compiler team do work on integrating VB.NET and C# by default, and often exclude F#.

I would like to see the same happening with F# or if not possible (because this definitely has a added cost), have MS be more open and communicating about that fact.

I would also like to see the gap reducing instead of widening going forward.

https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9110134-f-support-in-net-native-for-uwp

https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/7542181-add-f-support-for-net-native

https://groups.google.com/d/msg/fsharp-data-science/_Xk1I5k4UrA/mgfCb_HtBwAJ

edit: change we with I, I really don't know about others :) I'm stressing on this because in many circumstances, F# can be a hard-sell, especially if it tends to become the last wheel MS takes care of in the .net eco-system.

@smoothdeveloper about wip: it's a lot about team size, c# has more devs working on ide/compiler/etc than f#, atm is like that.
AFAIK @NumberByColors it's working with the .net team about .net native (standup info)
But the compiler need to run on .net core and coreclr, before we can have a .net native so @KevinRansom it's working hard on the porting of fsc ( + debug, pdb, etc, lots of stuff ).
And @otawfik-ms is working on integrate f# with roslyn language service + tests and infrastructure.

Now lots of code is open, we can help as community and ppl answer to mentions in github so it's easy to gather info. If you ask, ms ppl from other teams help about features with info and links.

The work needed to enable this feature is owned by the VS IDE platform team. Currently there is no convenient place to enable file templates to cause setup to start. It is on their radar although they have many competing priorities right now, and doesn't look like it will make it into Dev 15.

As for making F# checked by default ... Visual Studio is trying to slim down the default install size, the way that was implemented was by making most new components and many existing components selectable on installation.

We think with project new breadcrumb templates and F# project detection the "oops I forgot to install F# when I installed VS" experience is pretty great. Yes for those developers who go searching for the F# .FSX file and discover it is missing, they will have to go to the file new project dialog and click on the breadcrumb to install F#. Whilst that it is not ideal it is still very ... very ... very convenient.

Sorry I don't see how this is convenient. Tbh I probably wouldn't have discovered this work around myself.

@KevinRansom is it possible in next version of VS to add a .fsx file to any kind of project?

With VS2015, I'm trying to add one such file to C# project, and I can find:

  • CoffeeScript File
  • JavaScript File
  • JSX File
  • TypeScript File
  • TypeScript JSX File
  • Windows Script Host

but no F#, nor C# (script).

image

I'm sure there is a team working on project / items templates, and curating what comes out of the new file/item dialog, it is a central place of the IDE, users go through this dialog very frequently. Is this team doing all necessary to make sure F# has good visibility?

@smoothdeveloper yes C# is enabled default in the box, and F# isn't. A decision was taken to reduce the install size of Visual Studio most new components are not enabled by default and some existing components were disabled by default, that decision was based on usage of the feature.

For projects there was a convenient interception points that allowed us to add project breadcrumbs to the new project dialog and missing component detection when an existing F# project was loaded. That same mechanism does not exist for item templates. Someone has to write it, right now that team are busy inventing a super fact installer ... it is my opinion that I would prefer they nail that than this.

You may well disagree with that prioritization but as it stands now the experience is pretty great, and when we have a super fast installer then we can build on that.

@forki I'm thinking you undersell your abilities. You would have got it installed in pretty decent time.

Kevin

@KevinRansom thanks for disclosing the state of things. I understand the prioritization.

What about having .fsx (and .csx) shown as a project item in any project, there are a lots of other type of scripts already.

MS should consider putting F# on equal footing with C# & VB.NET for default install, this would solve the issue if it can't be prioritized.

@smoothdeveloper well ... in the long term I expect that all languages and most tools will be optional, but we are still a while away from that right now.

From a VS perspective C# and F# are on an equal footing, we are both included in the VS installer for all of the major SKUs and require no further downloads to install.

Our current model is for us to work with the community to get the most impactful items done, I believe that we are pretty good at that, and I hope that the community continues to invest their passion and energy in Visual F#, That passion and energy certainly helps us to continue to invest in the language and tooling and may over time prove to be a spur for higher investment.

Kevin.

@enricosada @adamdriscoll @hmemcpy @GerjanOnline

[Merely providing technical context on the PowerShell info bar that shows up]

The PowerShell bar (which we creatively refer to as the gold bar :P ) that appears when a .ps1 file opens is actually its own micro-extension that Visual Studio will load on certain file types.

This micro extension gets installed as one of many components of the underlying Common Azure Tools which are used throughout all of Visual Studio.

To provide additional context, The Common Azure Tools _used_ to include rudimentary PowerShell syntax highlighting, until we gutted it in favor of partnering with Adam :)

Because this control also shows up on Visual Studio 2013 (Dev12), it's actually a custom control. However, if we were targeting Visual Studio 2015 (Dev14) or higher, we would definitely use the IVsInfoBar and related interfaces.

Closing this out as it's not something we control, nor is it likely to be something we control. As of VS 2017 15.5, the _far_ most popular workloads require .NET Core, which in turn requires F#, thus making F# installed by default for the majority of users. I think the issue is significantly reduced as a result of this.

Was this page helpful?
0 / 5 - 0 ratings