Repository navigation
adding RuntimeIdentifiers to the fsproj breaks the build #2964
Description
Description
I came across some really strange behaviour when using paket and dotnet core together with RuntimeIdentifiers.
Repro steps
Please provide the steps required to reproduce the problem
-
Create a new hello world fsproj
-
add a
RuntimeIdentifierssection to the file:
<RuntimeIdentifiers>ubuntu.16.04-arm;ubuntu.14.04-arm</RuntimeIdentifiers>
-
run
paket install -
run
dotnet build
Expected behavior
build is successful.
Actual behavior
build fails with error message:
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.App (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.14.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.14.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.14.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.DotNetAppHost (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.14.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.App (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.16.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.16.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.16.04-arm'.
/Users/kdummann/source/rubecula/frontend/backend/backend.fsproj : error NU1100: Unable to resolve 'runtime.linux-arm.Microsoft.NETCore.DotNetAppHost (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/ubuntu.16.04-arm'.
The behaviour is not arm specific it also happens for x64 and x86.
Known workarounds
do not use paket to do nuget handling. Simply removing the restore targets file from the fsproj file is enough. Run dotnet restore or dotnet build. Then add the paket restore targets again and everything works. This seems to fix it for the whole machine. The problem is more in CI where we run each build in a new container and as a workaround have to run dotnet restore in a dummy project to get the code building.
Activity
forki commentedon Jan 5, 2018
/cc @enricosada @matthid
matthid commentedon Jan 5, 2018
Can you just for fun try with setting the environment variable
PAKET_DISABLE_RUNTIME_RESOLUTIONtofalse? I guess (I have honestly no idea) this is because of those magic runtime dependencies, because: We don't know about them by default + We prevent NuGet to download stuff (ie everything going to the internet is done by paket).coolya commentedon Jan 6, 2018
I tried it but seems to have no effect:
forki commentedon Jan 11, 2018
do you have a minimal repro?
coolya commentedon Jan 11, 2018
will create sample on the weekend, this week is quite busy.
EelcoMulder commentedon Jan 13, 2018
I have the same issue, only not local but building on VSTS, so I can provide a build log if you want. It does download some runtime files but fails on the same files mentioned above but for win-x64.
2018-01-12T09:05:17.5158152Z d:\a\1\s\Wotzj.Api\Wotzj.Api.fsproj : error NU1100: Unable to resolve 'runtime.win-x64.Microsoft.NETCore.App (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/win-x64'. 2018-01-12T09:05:17.5159868Z d:\a\1\s\Wotzj.Api\Wotzj.Api.fsproj : error NU1100: Unable to resolve 'runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/win-x64'. 2018-01-12T09:05:17.5160835Z d:\a\1\s\Wotzj.Api\Wotzj.Api.fsproj : error NU1100: Unable to resolve 'runtime.win-x64.Microsoft.NETCore.DotNetHostResolver (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/win-x64'. 2018-01-12T09:05:17.5162812Z d:\a\1\s\Wotzj.Api\Wotzj.Api.fsproj : error NU1100: Unable to resolve 'runtime.win-x64.Microsoft.NETCore.DotNetAppHost (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/win-x64'.coolya commentedon Jan 13, 2018
I have create a repo to reproduce. I also added a workaround to the readme file:
https://github.com/coolya/paket-problem
coolya commentedon Jan 14, 2018
I investigated a bit more and it seems that it works with sdk 2.0.0 but fails with the latest SDK.
forki commentedon Jan 14, 2018
cartermp commentedon Jan 14, 2018
Do you see this same issue with no paket as well?
coolya commentedon Jan 14, 2018
Nope, then it works fine. It also works once a projects that doesn't use paket has done a
dotnet restore. There must be some machine wide cache or something where it looks up these runtime dependencies.granttrevor commentedon Jan 18, 2018
Just struck and thankfully found this Issue log using paket with in a csproj.
dotnet restore was throwing errors like:
error NU1100: Unable to resolve 'runtime.linux-x64.Microsoft.NETCore.App (>= 2.0.0)' for '.NETCoreApp,Version=v2.0/linux-x64'Removing the paket target, restoring and then adding the paket target back in has gotten past it for now.
Disabled for now until we know what to do with runtime deps - referen…
forki commentedon Jan 18, 2018
I added a workaround in the Paket.Restore.targets file until we have a proper solution. Please retry with that
Disabled for now until we know what to do with runtime deps - referen…
matthid commentedon Jan 27, 2018
Yes I see this as well in Fake after updating .net SDK and the sln file (which visual studio did automatically) https://travis-ci.org/fsharp/FAKE/builds/334104618?utm_source=github_status&utm_medium=notification
So in particular after fsprojects/FAKE@56c07fc and fsprojects/FAKE@080e274