Is there a way to specify normals as per-face instead of per-vertex in Unity?

The documentation says that mesh.normals

are assigned to vertices, not triangles.

I've got a somewhat detailed mesh where faces are joining at right angles. If I don't set the normals, everything takes on a kind of metallic appearance. If I set the normals on the vertices, though, then I have to specify which face I'm using and then the edges are very rounded.

I don't mind making separate meshes for each surface, but it seems kind of a waste to not share the vertices. Is there a way to specify per-face normals instead of per-vertex?

I was a bit concerned that Unity would smooth the outer surface but not smooth the corners, resulting in a wonky edge where the two meshes meet, but that wasn't an issue. That might be because all the "sub-meshes" are all actually on the same mesh in the script, but I've got a satisfactory result now and I'm not willing to spend a lot of time trying to find ways to break it.
• @DMGregory - Neat read, and again makes sense to me from a conceptual standpoint. I'm new-ish to Unity and dynamic meshes; I've got a really strong background with Matlab and doing meshes (by hand lol) with the patch command there. As with most things Matlab, they've got some workarounds for handling the normals and encourage you to share vertices to keep the vertex array small (the line just above "Behavior of the patch Function.") Thanks for directing me to the other post! – Chuck Aug 29 '19 at 16:38