Skip to content

Support .NET Platform Standard 1.6 (inc. .NET Core 1.0) #531

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

Closed
khellang opened this issue Aug 26, 2015 · 121 comments
Closed

Support .NET Platform Standard 1.6 (inc. .NET Core 1.0) #531

khellang opened this issue Aug 26, 2015 · 121 comments

Comments

@khellang
Copy link

khellang commented Aug 26, 2015

I figured it's time to start this discussion 😄

Here are some threads for reference:

castleproject/Core#90
nsubstitute/NSubstitute#192
devlooped/moq#168

There's a PR pending for .NET Core support in Castle.Core at castleproject/Core#92

@adamralph
Copy link
Contributor

As soon as Castle.Core support the dotnet TFN I'm happy to do this.

@jeremymeng
Copy link
Collaborator

Would it be okay to start the work based on https://github.com/castleproject/Core/tree/netcore? Most of the big changes are already in. I am willing to give it a first stab.

@adamralph
Copy link
Contributor

@jeremymeng I think would be fine to grab some custom binary to reference for now, so long as your are prepared to rebase/squash your commits back to something clean (or have someone else do that) when Castle for netcore (or whatever other name is goes by) is on NuGet.

@jchannon
Copy link

Where are we at with this?

@thecodejunkie
Copy link

We have a green build against rc2 now (including tests, i.e all tests that do not require FakeItEasy) NancyFx/Nancy#2418 and would be happy to help transfer knowledge on rc2 changes to help this move along

@blairconrad
Copy link
Member

Hey, @jchannon and @thecodejunkie. As you can see, @jeremymeng had kindly been doing some work on this for us, but the core team had all been focusing on FIE 2.0, which I think we're nearly ready to release the second (and final, one hopes) RC for.

We'd be grateful for any insight you have to offer, but I'm not going to be available for the next two weeks, so can't personally do anything. I'll leave it up to @thomaslevesque and @adamralph to coordinate with you.

@jeremymeng
Copy link
Collaborator

jeremymeng commented Apr 29, 2016

@jchannon @thecodejunkie

There are a couple of work items now

  • Replacement of binary serialization used in FileStorage. So far I haven't had success in using a Json or Xml serializer.

    Update I've change how the serialization is done. Instead of serializing MethodInfo, now fully-qualified type name, method name, and argument types are serialized. In Deserialization, the MethodInfo instance is retrieved again from the type.

  • Seemly incorrect usage of my custom AssemblyLoadContext. It seems that loading from a file would fail due to missing dependencies.

  • Move to RC2

  • integration into build system, etc.

    Update Now it just builds fine using rake when the .NET Core VS tooling is installed.

  • The test BinarySerializationHelper does binary serialization and serialization for arbitrary types. I'm inclining to not support it on .NET Core.

Any helps are welcome 😄

@thomaslevesque
Copy link
Member

@jeremymeng, thanks for all your work on this task!

Any helps are welcome 😄

Right now I'm focusing on FakeItEasy 2.0.0-rc2, but once it's released, I'll be glad to give you a hand. I know almost nothing about .NET Core, though...

@adamralph
Copy link
Contributor

Given the recent sweeping changes and volatile nature of .NET Core, I'm not sure it's worth investing any time in this in the near future. I'm leaning towards closing for now, and opening a new issue to support the relevant .NET Standard after RTM.

We appreciate the efforts of @jeremymeng and he is, of course, welcome to carry on with his work on #617 but right now, if we have no intention of supporting .NET core until some later release, I believe this issue is just noise in our backlog.

@thomaslevesque
Copy link
Member

thomaslevesque commented May 14, 2016

@adamralph, RC2 is scheduled to be released about now (mid-May), and RTM is scheduled for the end of June. Sounds like "near future" to me 😉. This issue is still relevant, so I think we should keep it open.

@adamralph
Copy link
Contributor

OK, np. Let's leave it open.

@henningst
Copy link

RTM shipped as planned on June 27th. Do you have any ETA on adding .NET Core support? Moq has published an alpha supporting .NET Core.

@blairconrad
Copy link
Member

Thanks for the interest, @henningst. We don't have an ETA as such (given that we all work on FakeItEasy if and when we have spare time to so, it's hard to guess at dates), but rest assured that we do want to support .NET Core. The same chap (@jeremymeng) that's been working on adding .NET support to Castle.Core (which, like Moq, has alphas that currently support the prerelease .NET Core) has been making great strides in helping FakeItEasy support .NET Core. As we're able we'll look at how best to integrate his work.

@jeremymeng
Copy link
Collaborator

jeremymeng commented Jul 1, 2016

People who are interested can download private nupkgs here https://ci.appveyor.com/project/jeremymeng/fakeiteasy/build/artifacts

official pre-release builds on AppVeyor: https://ci.appveyor.com/nuget/FakeItEasy

@adamralph
Copy link
Contributor

Thanks @jeremymeng.

@henningst if you like, you can use @jeremymeng's app veyor build as your "alpha" channel for now.

@henningst
Copy link

Thanks for the tip! I'll give that a try :)

@adamralph
Copy link
Contributor

How are we affected by the recent revelation that netstandard 1.5 and 1.6 are going to be broken by 2.0?

@khellang
Copy link
Author

I'm not sure the breaking change is real after all; https://twitter.com/terrajobst/status/786993233913978880

@adamralph
Copy link
Contributor

Thanks @khellang, I missed that. Good to know!

@adamralph
Copy link
Contributor

Assigned to 3.0.0 milestone.

@adamralph
Copy link
Contributor

I checked off the integration tests item in The List.

Only specs to go! That's a good incentive to sort out xbehave once and for all.

BTW - I'd be content to push an 3.0 alpha to nuget.org now if we want to unblock NancyFx/Nancy#2612 and then push the first beta once we've got the specs running.

@thomaslevesque
Copy link
Member

I'd be content to push an 3.0 alpha to nuget.org now if we want to unblock NancyFx/Nancy#2612 and then push the first beta once we've got the specs running.

Sounds like a good plan 👍

@blairconrad
Copy link
Member

Oh, bother. I'd made a beta001. Can make an alpha001.

@adamralph
Copy link
Contributor

adamralph commented Nov 27, 2016

FYI I just pushed xbehave 2.2.0 beta 1 to NuGet, with support for .NET Standard 1.0! https://www.nuget.org/packages/Xbehave/2.2.0-beta0001-build680

@blairconrad
Copy link
Member

I'll expect your "hook up the specs" PR when I wake up!

@thomaslevesque
Copy link
Member

I'll expect your "hook up the specs" PR when I wake up!

I'm working on making the specs work on netcoreapp1.0 now. I haven't done much for .NET Core support so far, so I guess it's my last chance 😉

@blairconrad
Copy link
Member

blairconrad commented Nov 28, 2016

Haha! I was just having some fun.

Also, welcome to Heck.

@adamralph
Copy link
Contributor

adamralph commented Nov 28, 2016 via email

@thomaslevesque
Copy link
Member

Also, welcome to Heck.

Well, the worst part is the poor VS integration. No Intellisense, no test runner and no debug for netstd 😒

The project.json for the test project in xbehave itself might be a good reference. The explicit use of the testutility package should be ignored though, that's for the meta level code which allows scenarios to test scenarios.

Thanks; actually, I copied and edited the project.json from integration tests, and it's working fine. I just have one failing scenario to fix.

@adamralph
Copy link
Contributor

adamralph commented Nov 29, 2016 via email

@thomaslevesque
Copy link
Member

The VS test runner should work. It works for the xbehave solution.

For me it doesn't see any test, not even the net40 ones. Maybe I need to install something else.

@adamralph
Copy link
Contributor

The List is complete!

Fantastic work all round.

@blairconrad
Copy link
Member

Huzzah! Well done, everyone!

image

@adamralph
Copy link
Contributor

@blairconrad
Copy link
Member

This issue has been released in FakeItEasy 3.0.0:
https://github.com/FakeItEasy/FakeItEasy/releases/3.0.0

@jeremymeng, @jonorossi, thanks for all your help.
Look for your names in the release notes! 🏆

@weitzhandler
Copy link

Can you please add support for modern Xamarin PCLs (Profile 44), that target only UWP, Droid and iOS?

@blairconrad
Copy link
Member

@weitzhandler, thanks for your interest in FakeItEasy. I'll be the first to admit that I don't understand all the PCLs and whatnot, but I don't think we'll do this.
For starters, FakeItEasy relies on Castle.Core, which would have to support the profile, and it supports only .NETFramework 3.5, .NETFramework 4.0, .NETFramework 4.5, and .NETStandard 1.3. Also, I think the PCLs are the wave of the past, and we're looking forward to the .NET Standard.

My understanding is that the usual course would be to build an app's business logic into a PCL such that supports your target platform as well as .NET 4.0 or 4.5 or similar and then to have the test assemblies target that .NET Framework (or a compatible one). Profile44 supports .NET 4.5.1, so this should be an option for you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants