Better codegen: fix .props .targets & bundled packaging#42
Better codegen: fix .props .targets & bundled packaging#42noelex merged 2 commits intonoelex:mainfrom
Conversation
|
I think multi-target packaging And I'm not sure installing additional packages during build is a good practice. I think this kind of operation should be done at user's discretion. I think we should either ask the user to install If we're taking the bundling approach, we could target lowest supported LTS framework and enabling major roll forward will allow Or if we're concerned about binary breaking changes, we can still do multi-targeting since we will only need to package no more than 3 target frameworks if we choose to only package for supported versions of .NET. |
Yes, it would have been implied when the user agreed to install
"Strong Type" breaking changes in .NET seem to have been minimal since .NET 7, but features and performance changes are highly beneficial, though only if the generator outputs files that can use those features. (e.g., For now, I think bundling the Please let me know if you have more considerations about the interface generation, then I'll close this PR and send in another PR with reduced changes and rebased properly with the main branch. |
|
LGTM on changes to
Thanks! |
* move source ros2cs targets to Directory.build * simplifies project-agnostic Directory.build * drops EOL <= net7.0
e1c2d4a to
0f25f4d
Compare
Continuation from #38,
this one is packaging for each supported framework.Per-framework package will use .NET versioning:MajorNET.MajorRclNET.MinorRclNET.PatchRclNETMulti-target package is still supported, with detachedros2cstooling. (I think this is the preferred one)The
ros2cstooling will be bundled with multi-target Rcl.NET, supporting the lowest version of .NET 8 LTS.Fix some missing MSBuild properties and provide more flexible targets for library consumers.
(CI/CD part no longer applicable in this PR, will need another PR related to #45)
Works in:
CI (incl. github action)bydotnet pack -p:IsPackingSingleTfm=true -p:TargetFramework=<net>(I hadn't explored MSBuild enough to find out if there's way to split TargetFrameworks and do the single packaging from it instead)Examples here.Copilot: Pull Request Description
Summary
Improved CI/CD workflow for NuGet packaging and releases.Decoupledros2cstooling from theRcl.NETpackage.Details
Build System:
Directory.Build.targetsandDirectory.Build.props.build_files/.Improved per-framework packaging targets.Introduced a new MSBuild target (EnsureRos2csTool) to install and useros2csas a .NET tool, rather than bundling it withRcl.NET.UpdatedDirectory.Build.targetsto usetool run ros2csand allow passing custom arguments viaRos2csArgs.Changedros2cs.csprojto use a single framework property ($(Ros2csFramework)) for more flexible builds.Improved error handling and messaging for missingros2cstool.CI/CD:Overhauled.github/workflows/release.ymlfor more concise and flexible release handling.Added workflow dispatch with release type selection.Now uploads all.nupkgfiles to GitHub tag releases.Other: