CodeJam
CodeJam copied to clipboard
[Umbrella] Rewamping the library
I'm going to spend some time in order to revive the project and release a new major version.
The primary goals are the following (issues/PRs to be linked).
- [ ] (#153) Remove dead code (CodeJam.PerfTests). There's git history so we may revive it at any moment
- [ ] (#154) move all build artifacts (
binandobjdirs) into root.artifactsdirectory. The change is going to happen with .net 8 anyways, so I'll just speed it up :) - [ ] Update multitargeting subsystem. I'm going to make a new approach and use reusable MsBuild .targets / .props files. As a side bonus I do expect to have much more readable csproj files
- [ ] (#154) Update Appveyor pipelines. As it turns out the scripts may be simplified a lot. Also, I've managed to add target framework annotations to the test results (this helps a lot if build fails).
- [ ] Remove unused dependencies (looks like we do not need ComponentModel.DataAnnotations dependency except for some enum helpers).
- [ ] (#155) Add a new package publish scripts
As a preview, there's experimental repo with proofcode for points 2-4. Things to note:
- There's how project with multitargeting looks like
- The props for the project is autogenerated, shims to be used are selected in the template file.
- To proof that multitargeting is working as expected, there's a sample project that checks all targeting features to be used in CJ library.
- Test results are annotated with the target framework (check the Assembly name column).
FYI @andrewvk @NN--- . If needed, we can make a call and improve the roadmap.
It seems like Theraot is not so maintained. So there is some missing functionality thee, the coverage for new .NET features is not as good as it could be. Tried to contact the maintainer but didn't have any luck.
Yeah, I've managed to remove dependency on Theraot from most target frameworks except for net35 and net40.
Ah. Great. There is a modern solution for new features using source generators for .NET Standard 2.0 and above.
There is a modern solution for new features using source generators for .NET Standard 2.0 and above.
Well, never heard of that^) Do you mean some package/project or it's more like an idea to be done? If the latter, it's simpler to use source-only packages such as Nullable. Sadly, there's not so many usable ones.
As for source generators, I'd prefer to not use them unless absolutely mandatory. Source generators are hard to maintain and they are much more verbose than good old undead T4.
https://www.meziantou.net/polyfills-in-dotnet-to-ease-multi-targeting.htm
Here the list. Yeah T4 is nice but Source Generators are better integrated today.