fsprojects / FSharp.TypeProviders.SDK

The SDK for creating F# type providers
https://fsprojects.github.io/FSharp.TypeProviders.SDK/
MIT License
298 stars 94 forks source link

TP Template does not build on Mono #265

Closed sergey-tihon closed 5 years ago

sergey-tihon commented 5 years ago

Description

TP created from the template does not build on macOS/mono.

Repro steps

Please provide the steps required to reproduce the problem

  1. dotnet new -i FSharp.TypeProviders.Templates
  2. dotnet new typeprovider -n LemonadeProvider -lang F#
  3. cd LemonadeProvider
  4. mono .paket/paket.exe update
  5. dotnet build -c release

Expected behavior

Project should compile

Actual behavior

lemonadeprovider_runtime_fsproj_ _untitled__workspace_

Analysis

This is looks very strange for me, because fsharp.typeproviders.templates.5.0.0.nupkg contains netfx.props file and fsproj files import it.

win10_-_1803__april_

but dotnet new typeprovider -n LemonadeProvider -lang F# creates a folder without netfx.props and without imports.

lemonadeprovider_tests_fsproj_ _untitled__workspace_

Related information

sergey-tihon commented 5 years ago

@Szer proposed an idea for workaround, that we should not only import props file

<Import Project="..\..\netfx.props" />

but also add it as a resource

<ItemGroup>
    <None Include="..\..\netfx.props" />
    ...
</ItemGroup>

as a result, MyProvider.Tests.fsprojwill look like this

<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="..\..\netfx.props" />
  <PropertyGroup>
    <TargetFrameworks>netcoreapp2.0;net461</TargetFrameworks>
    <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>
  <ItemGroup>
    <None Project="..\..\netfx.props" />
    <None Include="app.config" />
    <Compile Include="MyProvider.Tests.fs" />
    <None Include="paket.references" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.10.0"/>
    <ProjectReference Include="..\..\src\MyProvider.Runtime\MyProvider.Runtime.fsproj">
      <Name>MyProvider.Runtime</Name>
      <Project>{7e90d6ce-a10b-4858-a5bc-41df7250cbca}</Project>
      <Private>True</Private>
    </ProjectReference>
  </ItemGroup>
  <Import Project="..\..\.paket\Paket.Restore.targets" />
</Project>
sergey-tihon commented 5 years ago

Looks like my mistake, I downloaded latest version (5.0.0) from NuGet on Windows manually and it does not containt netfx.props. This means that we need to release new version of template...

win10_-_1803__april_
sergey-tihon commented 5 years ago

Confirm that it works OK with NuGet package created manually from /templates folder.

sergey-tihon commented 5 years ago

Fixed in v5.1.0

dsyme commented 5 years ago

Thank you @sergey-tihon !