-
-
Notifications
You must be signed in to change notification settings - Fork 428
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
Initial .NET 8 upgrade #2789
Initial .NET 8 upgrade #2789
Conversation
<Description>Helpers for Marten-backed AspNetCore applications</Description> | ||
<VersionPrefix>6.4.0</VersionPrefix> | ||
<VersionPrefix>7.0.0-alpha.1</VersionPrefix> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have you considered using a Directory.Build.props
where such common repeated properties can be defined once and are then re-used by MsBuild automatically?
Sou would just need to touch ~5 files instead of the 45 right now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gfoidl All the primary Marten libraries all use Directory.Build.props
. Only the plugins related csproj have specific versions set since they can have their own set of changes and related releases. It is definitely a handful and not 45 is being touched :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was just wondering to see the same / similar change to many csproj-files.
So IMO Directory.Build.props
could have more common properties, and together with Central Package Management such repeated changes could be minimized.
So nothing urgent or that like, just to save some work for @oskardudycz 😉.
can have their own set of changes and related releases
Ah, OK. TIL they aren't versioned all together.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also note that when we do a major version update, we set a starting version for these plugin/additional projects in alignment with the major version, reflecting possible breaking changes, dependencies changed etc. After this point, as I said, it can go through it own life cycle of changes/releases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't question that (was so in the first comment, but you told me the versioning strategy then).
So my point is*:
- set the target-frameworks in the Directory.Build.props, so an update goes only there and doesn't need to be done in all projects (each project still has to specify the property, but can use the variable defined in the Directory.Build.props)
- use central package management, so updates to packages go to one (central) place and are not spread to all csproj-files
* this comment-thread is now in the wrong place, as the VersionSuffix
is a you mention independ for each project
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gfoidl, thank you for suggestions. I'll check the recent improvements around Central Package Management. The biggest challenge is that we try to minimise the project dependencies, and sometimes, we also need to have different package versions for different .NET versions. I'll check how much we can benefit from it. Good call. 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From my experience CPM kind of sucked in pre .NET 8 and had many troubles. Starting with .NET 8 (actually already starting with the previews) it's really good to use and doesn't have any problems.
For me the only point to keep in mind is that PrivateAssets
, etc. still needs to be set in the individual csproj that use such a package.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that instability was stopping me from trying that further, but thanks for letting me know that improved. I'll give it a try in this PR or (probably) a dedicated one 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
59988eb
to
253dbf2
Compare
- Bumped packages by major versions - Adjusted pipeline configurations. Azure DevOps will run .NET 6, GH Actions .NET 8 and 7
…ed that in the Linq branch
Added the specific frame generation for Dictionary<string, object> to use serializer instead of the build-int Npgsql transformation to dynamic
…ions - Fixed .NET 8, - Added permutations of supporting PG version: 12 (with plv8), 15 and latest (currently 16), - Updated pipeline to run plv8 tests only for database with extension configured - Removed benchmark config that we didn't use at all in recent years
…version Configured following configurations: - PG 12.8, .NET 7, plv8, Json.NET - PG 12.8, .NET 6, plv8, System.Text.Json - PG 15, .NET 6, JSON.NET - latest (currently PG 16), .NET 7, System.Text.JSON
…ollation settings Without that those tests would fail for alpine docker image (see: docker-library/postgres#327)
…g different PostgreSQL versions
PR contains the minimum set of .NET 8 related changes:
Removed also benchmark pipeline, as it was unused.
4. Added customisation for docker-compose and tests to allow easier using different PostgreSQL versions by running:
Can_query_by_hashset_contains test
, as @jeremydmiller handled that in the Linq branch.