- Linux-x64
- build/publish native assets
- OSX-x64
- build/publish native assets
- Win-x64
- build/publish native assets
Join
- Copy all native assets locally
- Build managed
- Package managed + native into .nupkg
- Linux-x64
- build/publish native assets
- OSX-x64
- build/publish native assets
- Win-x64
- build/publish native assets
- Win
- build/publish managed assets
Join
- Copy all managed and native assets locally
- Package managed + native into .nupkg
- Linux-x64
- publish native assets
- OSX-x64
- publish native assets
Join
- Copy all native assets locally
- Build managed + Win-x64 native
- Package managed + native into .nupkg
I like Option 1
- It is consistent, no 'special' leg gets native + managed assets built
- It scales when other Windows legs are brought online (win-x86, win-arm)
I like either 1a or 1b. I do like the fact that 1b's join is implicitly the package step in itself. If you do 1a, I would separate out the build of managed assets into a discrete step, so that it is simply an optimization that the managed asset build and package step happened on the same machine.