Bring a large pot of water to a boil over high heat. Cook 8 ounces linguine (or spaghetti) according to package directions for al dente, omitting salt and fat. Drain, reserving 1 cup pasta cooking water.
Meanwhile, sprinkle salmon with ½ teaspoon pepper and ¼ teaspoon salt. Heat 2 tablespoons oil in a large skillet over medium heat; add the salmon and cook, undisturbed, until a crust has formed on both sides, about 4 minutes per side. Transfer to a plate and let rest until cool enough to handle, about 10 minutes. Do not wipe the pan clean. Flake the salmon into chunks.
Increase heat to medium-high. Add asparagus pieces to the skillet; cook, stirring occasionally, until bright green and almost tender, about 4 minutes. Add 1½ tablespoons garlic and ½ teaspoon Italian seasoning; cook, stirring constantly, until fragrant, about 20 seconds.
Stir in 2 (5-ounce) cans evaporated milk; bring to a simmer over medium-high heat. Cook, stirring often, until starting to thicken, 1 to 2 minutes. Reduce heat to medium-low and add 2 ounces cream cheese, 1 teaspoon lemon zest and the remaining ¼ teaspoon salt; cook, stirring constantly, until melted and smooth, 1 to 2 minutes. Remove from heat; gradually stir in ½ cup Parmesan until melted, about 2 minutes. Stir in 3 tablespoons lemon juice and 3 tablespoons dill until smooth.
Add the reserved cooked pasta and salmon, tossing to coat in the sauce. Add pasta cooking water, ¼ cup at a time, as necessary to loosen the sauce. Garnish with lemon zest and/or dill, if desired.