dwmkerr / sharpgl

Use OpenGL in .NET applications. SharpGL wraps all modern OpenGL features and offers a powerful scene graph to aid development.
MIT License
753 stars 300 forks source link

.NET Core 3.0/3.1 support #166

Closed ghost closed 4 years ago

ghost commented 4 years ago

Are there any plans to port this project to .NET Core 3.1? Seeing as .NET Framework is slowing down, and the future of the framework (.NET 5) is an extension of .NET Core 3.1, I think it's the logical move to do a port.

dwmkerr commented 4 years ago

In theory this should be pretty straightforward - the bulk of the code is DLL imports and, some simple classes to wrap GL objects and then Windows controls. All of this functionality is available in .NET Core 3.0 onwards.

As it's been a few years since I've been doing enterprise .NET, one question I would have is on compatibility - is this likely to cause issues with people who are already using the code in large .NET Framework-based codebases, or would they be able to add a .NET Core based dependency?

Even if the legacy issue remains, it would probably still make sense to make a new Major release targeting .NET Core, and then maintain a legacy release branch for anyone who needs .NET framework support.

WDYT?

BTW cross-linking this issue from SharpShell as it is highly relevant!

https://github.com/dwmkerr/sharpshell/issues/252

anhellwig commented 4 years ago

You can target multiple frameworks in a csproj file when using the new SDK style. The resulting nuget package then contains .NET Core and traditional .NET Framework or .NET Standard assemblies. This way, you don't need to maintain separate code branches.

dwmkerr commented 4 years ago

OK I'm working on this now in a new branch, hopefully will have updates very soon!

dwmkerr commented 4 years ago

OK it's done! I've written up the experiences here 😄

https://dwmkerr.com/modernising-dotnet-projects/

If anyone has any problems open up an issue and I'll look into them. Am planning to spend some time cleaning up the library a bit and looking at support for MacOS and Linux.