-
Notifications
You must be signed in to change notification settings - Fork 586
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The release of System.Reactive 4.0 breaks dotnet fake
#1966
Comments
As a workaround, you could restrict System.Reactive to a use a lower version. |
|
Ok I did some investigations and apparently they changed their dependencies:
As we depend on |
Howdy Folks. Have dinged this into the Rx team. /cc @onovotny. He wakes up in a couple hours. I'm out on a bucks night so can't dig in. Sorry to hear of breakage. PS We hang out over at https://reactiveui.net/slack in #rxnet |
Another workaround is to add I'm not exactly sure what's going on with |
Not sure if that breaking change was indented. |
I've had a few beers but....
Why are 3.x assemblies referenced and mixed with 4.0 assemblies? |
@ghuntley Can you open an issue on their github as well and link back? I think this broke all fake 5 and probably some paket users.
Reason is that we resolve transitive dependencies to latest by default (which is the difference to nuget basically). At runtime everything will be resolved to 4.0 (so there is no mixing, it just states that Fake.Core.Target depends on 3.0 as it is already compiled), but that fails as the required dependencies are no longer available. |
@kblohm If you have some time can you create a PR to update the dependencies accordingly (we might need that workaround release if RX team says that breakage was intended...) |
Fsharp,Control.Reactive specifies
right? |
Okay so it's a couple hours until New York wakes up (Oren). We deliverately merged Rx into a all in one nuget package/assembly as part of 4.0. Compatibility facades with 3.x were published. |
I do not think we depent on System.Reactive directly. So for us to use the new versions, FSharp.Control.Reactive has to update first. |
@matthid i will run a build with |
Are you saying >= 3 or do you mean you really mean ~> ? Because twiddle
wakka is not part of nuget.
kblohm <[email protected]> schrieb am Sa., 26. Mai 2018, 12:01:
… @matthid <https://github.com/matthid> i will run a build with nuget
System.Reactive ~> 3.0 locally. When that finishes successfully i will
make a PR.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1966 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AADgNBqstC5Qr8O_jZ4SvyCFxaoI9rS7ks5t2SfegaJpZM4UO0F7>
.
|
Try to hard-code the dependencies to 3.1.1 if you don't want a dependency on 4.0. If you migrate to 4.0, don't take a dependency on System.Reactive.Linq because that's just a facade package. Reference the full package instead (System.Reactive). |
only the final package counts and my guess is it has no upper limit |
Try going to 3.11 as below that version may be too old for the shims. It's best to goto 4.x tho. |
what we want is to unbreak people ;) |
Isn't' |
Yes ne fsharp.reactive package with upper bound < 4 is needed. After that
we have time to upgrade that package to 4.x
kblohm <[email protected]> schrieb am Sa., 26. Mai 2018, 12:15:
… Isn't' ~> adding the upper bound to the nuspec? So that
https://github.com/fsprojects/FSharp.Control.Reactive/blob/master/paket.dependencies#L6
would result in < 4.0? Or do i not understand that correctly?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#1966 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AADgNC3zgbrhhBsIAheJGOqHOmIFVG88ks5t2StUgaJpZM4UO0F7>
.
|
@forki my question is more why that does resolve to 4.0 if it is just a transitive dependency in FAKE? |
Because it's resolving to max. That's default in paket. It has pro and cons. |
Not on the CI servers. It hadn't really been an issue before, even while keeping up with the bleeding edge of the Fake 5 pre-releases. |
@kblohm https://www.nuget.org/packages/Fsharp.Control.Reactive it has no upper limit. There is no automatic to apply upper limits from paket.dependencies into the final package. |
@SteveGilham Just a word of warning about your example:
See 9509b63 |
The underlying script from which the example was cut down started life using v4, so has some "for historical reasons" dead-weight to it. Automating the enforcement of style guidelines is a GOOD THING, even if it makes the fake-as-DSL somewhat more clunky. |
The following script will now work on staging: #r "paket:
source https://api.nuget.org/v3/index.json
source https://www.myget.org/F/fake-vsts/api/v3/index.json
nuget Fake.Core.Target prerelease
nuget Fake.Core.Environment prerelease
nuget Fake.Core.Process prerelease
nuget Fake.DotNet.AssemblyInfoFile prerelease
nuget Fake.DotNet.Cli prerelease
nuget Fake.DotNet.MSBuild prerelease
nuget Fake.DotNet.NuGet prerelease
nuget Fake.DotNet.Testing.NUnit prerelease
nuget Fake.DotNet.Testing.OpenCover prerelease
nuget Fake.DotNet.Testing.XUnit2 prerelease
nuget Fake.IO.FileSystem prerelease
nuget Fake.Testing.ReportGenerator prerelease //"
open System
open System.IO
open System.Xml
open System.Xml.Linq
open Fake.Core
open Fake.Core.TargetOperators
open Fake.DotNet
open Fake.DotNet.NuGet.NuGet
open Fake.DotNet.Testing.NUnit3
open Fake.Testing
open Fake.DotNet.Testing
open Fake.IO
open Fake.IO.FileSystemOperators
open Fake.IO.Globbing.Operators
let MyTarget s f =
Target.description s
Target.create s f
let Description = Target.description
// Preparation
MyTarget "Preparation" ignore
Description "ResetConsoleColours"
let resetColours = (fun _ ->
System.Console.ResetColor()
)
Target.createFinal "ResetConsoleColours" resetColours
Target.activateFinal "ResetConsoleColours"
MyTarget "All" ignore
"Preparation"
==> "All"
Target.runOrDefault "All" Release of rc017 is on the way. |
Because we were getting the following build error: ``` Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:20.36 Finished (Failed) 'DotNet:build' in 00:00:20.8917736 Finished (Failed) 'Build' in 00:00:20.8932132 --------------------------------------------------------------------- Build Time Report --------------------------------------------------------------------- Target Duration ------ -------- Clean 00:00:00.0005837 Build 00:00:20.8931029 (Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. General Exception (0x80131500)) Test 00:00:00 (skipped) Total: 00:00:20.9348330 Status: Failure --------------------------------------------------------------------- Script reported an error: -> BuildFailedException: Target 'Build' failed. -> One or more errors occurred. (Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. General Exception (0x80131500)) -> FileLoadException: Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. General Exception (0x80131500) -> Could not load 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. This can happen for various reasons: - You are trying to load full-framework assemblies which is not supported -> You might try to load a legacy-script with the new netcore runner. Please take a look at the migration guide: https://fake.build/guide/fake-migrate-to-fake-5.html - The nuget cache (or packages folder) might be broken. -> Please save your state, open an issue and then - delete 'Microsoft.Build.Framework' from the '~/.nuget' cache (and the 'packages' folder) - delete 'paket-files/paket.restore.cached' if it exists - delete '<script.fsx>.lock' if it exists - try running fake again - the package should be downloaded again - Some package introduced a breaking change in their dependencies and .dll files are missing in the resolution -> Try to compare the lockfile with a previous working version -> Try to lower transitive dependency versions (for example by adding 'strategy: min' to the paket group) see fsprojects/FAKE#1966 where this happend for 'System.Reactive' version 4 -> If the above doesn't apply or you need help please open an issue! Hint: To further diagnose the problem you can run fake in verbose mode `fake -v run ...` or set the 'FAKE_DETAILED_ERRORS' environment variable to 'true' Warning: Paket resolved a FSharp.Core with version '8.0.0.0', but fake runs with a version of '6.0.0.0'. This is not supported. Hint: Could not find a version in your paket.dependencies file, consider adding 'version 7.1.5' at the top of your dependencies file (/home/runner/work/FSharpLint/FSharpLint/paket.dependencies). Please either lock the version via 'nuget FSharp.Core <nuget-version>' or upgrade fake. Read fsprojects/FAKE#2001 for details. Read fsprojects/FAKE#2193 for details. ```
Description
Following the new release at ~17:00UTC Friday 25 May, builds from clean have stopped working. In each case the script fails with
Repro steps
Install Fake RC 16-225, then
dotnet fake run
this scriptExpected behavior
Nothing much happens
Actual behavior
Known workarounds
None yet
Related information
Observed on both Windows (AppVeyor) and Linux (travis-ci)
The text was updated successfully, but these errors were encountered: