xBimTeam / XbimEssentials

A .NET library to work with data in the IFC format. This is the core component of the Xbim Toolkit
https://xbimteam.github.io/
Other
485 stars 172 forks source link

.NET6 support in Essentials #451

Open martin1cerny opened 1 year ago

andyward commented 1 year ago

Didn't Steve already start this at https://github.com/xBimTeam/XbimEssentials/commit/6c5f7c513118331f34678dc2c6eb92846555ea80 ?

mlankamp commented 1 year ago

What about net7, this will be released this month?

And maybe remove net45 and net46 from the TargetFrameworks as support is expired

andyward commented 1 year ago

Agreed. Net 7 should be trivial now we've got to 6 in Geometry. Obviously it's not LTS. See #467

In the next major release of Toolkit (v6) we're reviewing the framework support. We'll definitely drop anything prior net472. We'll likely also drop netcore 3.1 as that is also going out of support soon.

Going forward the best support will be on the latest netcore versions and I think ultimately we'll phase out netframework as it's painful to maintain xbim across so many Frameworks, especially in Geometry.

alokraj2007 commented 1 year ago

Hi, When can we expect this .Net 6 support?

andyward commented 1 year ago

It's already in Essentials develop branch which is in myget if you want to try out. We also have a preview branch of net6.0 Geometry engine in the netcore branch

alokraj2007 commented 1 year ago

@andyward Thanks for a quick response. Can the Microsoft Extension dependency be upgraded to v7.0.0 for . Net 6?

andyward commented 1 year ago

Can you clarify why? what problem are issue you're facing?

You can target a .net7 runtime and dependencies in your own application if you want to - and our net6 libraries (and netstandard) will just work against the newer framework. As a library we aim for lowest supported platform versions rather than latest. net6.0 has long term support, while net7.0 is STS only.

Ultimately we technically only need target netstandard2.0 and netstandard2.1. which will cover net472 upwards on net framework and net6-7 on netcore (as well as EOL Netcore3.1/Net5.0) - as a library there's no benefit in multi-targeting to support 6 & 7 (& 8 etc). All the newer frameworks implement netstandard2.

Note Geometry engine is an edge case as we cannot target netstandard, and need to target a runtime implementation in the C++/CLI projects.