In attempting to solve the issue that most of the time Rider does not actually build the project that you are launching before launching it, I tried setting the Build Project launch configuration step to explicitly build the program project (as opposed to "Selected Project" which I'm not sure the meaning of).
Doing so instead causes the entire solution to be built.
That is, if I modify a dependency of the program project, then all dependents of that dependency are rebuilt as well, rather than just the ones related to the program project.
(In other words, if Program A and Program B both reference Library A, and I modify Library A, then both Program A and B are rebuilt, even though the build step says Build Project: Program A. That would be the expected result of choosing Build Solution, not Build Program A.)