Installing WebSharper

I’m developing web applications using WebSharper on macOS Monterey.

To install the the templates, use:

% dotnet new -i WebSharper.Templates

The following templates are installed:

% dotnet new --list websh
These templates matched your input: 'websh'

Template Name                           Short Name       Language  Tags          
--------------------------------------  ---------------  --------  --------------
WebSharper 5 Client-Server Application  websharper-web   [C#],F#   WebSharper/Web
WebSharper 5 Extension                  websharper-ext   F#        WebSharper    
WebSharper 5 Html Site                  websharper-html  [C#],F#   WebSharper/Web
WebSharper 5 Library                    websharper-lib   [C#],F#   WebSharper    
WebSharper 5 Minimal Application        websharper-min   [C#],F#   WebSharper/Web
WebSharper 5 Proxy                      websharper-prx   [C#],F#   WebSharper    
WebSharper 5 Single Page Application    websharper-spa   [C#],F#   WebSharper/Web

To create a project, use dotnet new websharper-web -lang F# -o outputFolder.

After the project has been created, the project file looks as follows:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Client.fs" />
    <Compile Include="Startup.fs" />
    <None Include="wsconfig.json" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="WebSharper" Version="5.0.0.120" />    
    <PackageReference Include="WebSharper.FSharp" Version="5.0.0.120" />
    <PackageReference Include="WebSharper.UI" Version="5.0.0.120" />
    <PackageReference Include="WebSharper.AspNetCore" Version="5.0.0.120" />
  </ItemGroup>

</Project>

These 5.0... versions of WebSharper do not compile on OSX:

dotnet build
Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  chmod: /Users/XXX/.nuget/packages/websharper.fsharp/5.0.0.120/build//../tools/net5.0/osx-x64//wsfsc.sh: No such file or directory
/Users/XXX/.nuget/packages/websharper.fsharp/5.0.0.120/build/WebSharper.FSharp.targets(61,5): error MSB3073: The command "chmod u+x '/Users/XXX/.nuget/packages/websharper.fsharp/5.0.0.120/build//../tools/net5.0/osx-x64//wsfsc.sh'" exited with code 1. [/Users/XXX/Projects/mywebsharper/Exercise1/Exercise1.fsproj]

Build FAILED.

Problem seems to be that for version 5 of [WebSharper][websharper-home], the targets for osx-x64 are missing:

% ls /Users/XXX/.nuget/packages/websharper.fsharp/5.0.0.120/build//../tools/net5.0
linux-musl-x64	linux-x64	win-x64

Remidy

Change all the references to 5.0... in the project file to 4.*:

<ItemGroup>
  <PackageReference Include="WebSharper" Version="4.*" />    
  <PackageReference Include="WebSharper.FSharp" Version="4.*" />
  <PackageReference Include="WebSharper.UI" Version="4.*" />
  <PackageReference Include="WebSharper.AspNetCore" Version="4.*" />
</ItemGroup>

Another way is to set a variable for the version:

<PropertyGroup>
  <TargetFramework>net5.0</TargetFramework>
  <WSVersion>4.*</WSVersion>
</PropertyGroup>
...
  <PackageReference Include="WebSharper" Version="$(WSVersion)" />