Preheat oven to 425ºF. Line a baking tray with parchment paper.
Prepare the lemons by zesting 1 of the lemons into a small bowl. Set aside. To cut segments, use a sharp knife to slice the tops and bottoms off both lemons. Place a lemon flat-side down on a cutting board. Following the shape of the lemon, carefully cut away the skin and white pith. Next, hold the lemon in your hand and carefully slice each section on either side of the membrane, removing the fruit sections until all fruit is cut from the center. Repeat for the other lemon. Remove pits from segments and set the segments aside in a separate bowl. Use your hands to squeeze out the juice from what's left of the lemon into the bowl with the segments.
Arrange asparagus in a single layer on the prepared tray. Drizzle with oil and sprinkle with a little salt. Place the tray in the oven and roast until tips start to get crispy and the stalks are tender enough to cut with a fork, but not mushy.
To make the pasta, cook pasta according to package instructions. Drain pasta, reserving about 1 cup of cooking water, and return the pasta to the pot. Add a little oil and toss so it doesn't stick together.
Meanwhile, in a small pot, melt the butter over medium heat. Add garlic, shallots, and 1 teaspoon of salt. Cook, while stirring occasionally, for 3 to 4 minutes, until shallots are soft and garlic is fragrant. Pour a few tablespoons of milk into the pot and stir in the cornstarch until smooth. Stir in the remaining milk. Bring to a gentle simmer and cook until slightly thickened, about 8 minutes. Strain lemon juice into the milk, reserving the segments. Pour cream sauce over the pasta and toss, adding some of the reserved pasta water to create a thin sauce that coats pasta.
To serve, transfer pasta to a platter or individual bowls. Adorn with asparagus, lemon segments, hazelnuts, and zest. Another turn or two of cracked pepper wouldn't hurt either.