scottoffen / grapevine

Fast, unopinionated, embeddable, minimalist web framework for .NET
https://scottoffen.github.io/grapevine/
MIT License
103 stars 16 forks source link

Add net461 TargetFramework #51

Closed eksime closed 3 years ago

eksime commented 3 years ago

This adds net461 as a target so that projects using mono 4.6 can use Grapevine 5. All dependent packages are available for 461, only System.Net.Http needed to be referenced.

scottoffen commented 3 years ago

What about all the other versions of Mono? Would we need to add additional target versions to support that?

eksime commented 3 years ago

Hey, I'll do some more testing with this as I've potentially found an issue with the attributes under mono, even though the tests passed when running under framework 461.

As for the other versions, it should be fine to target netstandard2.0 - this chart has a guide on which versions are supported, ideally it'd be possible to target netstandard1.6, but many of the nuget dependencies don't support it.

For some background on why I'd like to get this working; I'm trying to embed this into a Unity project which targets mono 4.5 and I'm currently using grapevine 4 which is working great, but it would be nice to eventually upgrade to Grapevine 5.

Thanks for making Grapevine, too! It's really useful, and I've not found any other projects like it. I tried to use aspnetcore/kestrel at first which was a pain to get working and had a ton of dependencies. I started writing my own wrapper around HttpListener and found grapevine when doing research and it was much better suited to my use case!

(Sorry, hit the close button by accident there)

scottoffen commented 3 years ago

.NET Framework 4.6.1 should work fine without the additional target (see this thread). I don't have any experience with Mono or Unity. Let me know if you figure out how to get it working under the versions you need, and if it isn't too heavy of a lift, I can make that change.

eksime commented 3 years ago

Thanks, I'll do some more digging and see if the issue with the attributes is going to require more extensive changes, I'm fairly new to working in mono / unity and unfortunately the game I'm trying to create a mod for seems to target quite an old version.

And yeah, people targeting .net framework 461 and up should be fine as they can use the existing netstandard2.0 target, but it seems that although mono 4.6 is broadly compatible with framework 461, mono 4.6 isn't compatible with netstandard2.0 (I'm not sure on the exact reason why). There's a better chart here than the one I linked before that shows the lack of support in this area.

If it ends up being a huge task requiring a ton of changes, I realise it's probably not worth the extra complexity and consideration to code changes/dependencies going forwards, since this'll probably affect only a handful of people anyway.

scottoffen commented 3 years ago

You'd be surprised how many people I talk to that are using Grapevine in their game development. If it makes things easier for the community, I'm for it. Meanwhile, I'll close this PR and you can open a new one if we decide to make some changes.